qq_40125525 2019-09-03 10:16 采纳率: 50%
浏览 954
已采纳

JSON串数组如何取值?用的C#。。

{\"datetime\":\"2019/9/2 13:46:00\",\"measparam\":\"w01018\",\"value\":411.839996337891,\"unit\":\"mg/L\",\"type\":1,\"dataflag\":\"N\"},{\"datetime\":\"2019/9/2 13:46:00\",\"measparam\":\"w21011\",\"value\":3.07800006866455,\"unit\":\"mg/L\",\"type\":1,\"dataflag\":\"N\"}

有这样一个json串数组如何判断当measparam为w01018时候,value取值为411.839996;当measparam为w21011时候,value取值为3.07800006866455?

  • 写回答

3条回答 默认 最新

  • Yentre 2019-09-03 16:54
    关注

    先把json转成实体,这里帮你把实体类写好了

    public class Rootobject
    {
        public Root[] Root { get; set; }
    }
    
    public class Root
    {
        public string datetime { get; set; }
        public string measparam { get; set; }
        public string value { get; set; }
        public string unit { get; set; }
        public string type { get; set; }
        public string dataflag { get; set; }
    }
    

    之后你需要写一个json反序列化函数,这个需要引用System.Web.Extensions

    public static T BeginJsonDeserialize<T>(string str)
    {
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        return serializer.Deserialize<T>(str);
    }
    

    然后把你的json语句反序列化成对象

    var json = BeginJsonDeserialize<Rootobject>("[{\"datetime\":\"2019/9/2 13:46:00\",\"measparam\":\"w01018\",\"value\":411.839996337891,\"unit\":\"mg/L\",\"type\":1,\"dataflag\":\"N\"},{\"datetime\":\"2019/9/2 13:46:00\",\"measparam\":\"w21011\",\"value\":3.07800006866455,\"unit\":\"mg/L\",\"type\":1,\"dataflag\":\"N\"}]");
    

    然后你就可以对这个实体做任何判断了,用linq会比较方便
    例如

    var m1 = json.Root.ToList().Find(p => p.measparam == "w01018");
    var m2 = json.Root.ToList().Find(p => p.measparam == "w21011");
    if(m1==null || m1.value!= "411.839996")
        MessageBox.Show("w01018判断失败");
    if (m2 == null || m2.value != "3.07800006866455")
        MessageBox.Show("w21011判断失败");
    

    全部代码截图
    图片说明

    有用望采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog