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

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 Linux环境下CA证书更新问题
  • ¥15 sqlserver语句提取结果以外数据
  • ¥60 微信小程序如何上传QQ聊天文件
  • ¥300 开发的系统遭到无良商家的破解,请问如何防止再次发生,并追回损失
  • ¥15 java代码写在记事本上后在cmd上运行时无报错但又没生成文件
  • ¥15 关于#python#的问题:在跑ldsc数据整理的时候一直抱这种错误,要么--out识别不了参数,要么--merge-alleles识别不了参数(操作系统-linux)
  • ¥15 PPOCRLabel
  • ¥15 混合键合键合机对准标识
  • ¥100 现在不懂的是如何将当前的相机中的照片,作为纹理贴图,映射到扫描出的模型上
  • ¥15 安卓OpenCV人脸识别分类器加载