• C#解析json


    前一段时间有个项目调用到外协单位的一个web服务,公布的方法和返回值都是json字符串,返回结果让我困拢了很久。
     
    返回结果:{"dataList":"[{\"HH\":\"5001314065\",\"HM\":\"602斯群慧\",\"COUNT(*)\":\"1\"},{\"HH\":\"5001301296\",\"HM\":\"宁波广厦物业管理有限公司\",\"COUNT(*)\":\"1\"}]","message":"获取数据成功!","data":"1","success":"1"}

    没仔细看,就一把拿过来反序列化,
     
    反序列化方法如下:

    View Code
    View Code 

    1     private T Deserialize<T>(string sJson) where T : class
     2     {
     3         DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(T));
     4         MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(sJson));
     5         T obj = (T)ds.ReadObject(ms);
     6 
     7         ms.Close();
     8         return obj;
     9     }


     
    在反序列化的过程中一直报异常,经过检查发现是json字符串在包含了COUNT(*)这样的特殊字符,在反序列化的过程中找不到属性,后来沟通把COUNT(*),改成SUMTIME就可以正常解析了,
     
    这里先说一下我的做法:声明一个类StopTimeResult 包含四个属性与json字符串中对应,然后再声明一个类StopTime包含三个属性,与嵌套的json字符串对应,氢目标json字符串反序列化成StopTimeResult 实例,然后取StopTimeResult中的dataList属性,反序列化成List<StopTime>

    如下所示:
     

    View Code
     1     [DataContract]
      2     public class StopTime
      3     {
      4         [DataMember]
      5         public string HH { getset; }
      6         [DataMember]
      7         public string HM { getset; }
      8         [DataMember]
      9         public string SUM { getset; }
     10     }
     
    View Code
     1     [DataContract]
     2     public class StopTimeResult
     3     {
     4         [DataMember]
     5         public string dataList { getset; }
     6         [DataMember]
     7         public string message { getset; }
     8         [DataMember]
     9         public string success { getset; }
    10         [DataMember]
    11         public string data { getset; }
    12     }


    View Code 

    1                 StopTimeResult str = new OMSHelper().Deserialize<StopTimeResult>(result);
    2                 List<StopTime> stopTimeList = new OMSHelper().Deserialize<List<StopTime>>(str.dataList);

     
     
     

  • 相关阅读:
    window.close关闭当前页面
    select设置innerHMTL
    google禁止更新服务
    git 建立仓库步骤
    git 第一次上传报错 rejected error: failed to push some refs to
    selenium WebDriverWait 重写子类,赋值真实异常message
    vmware centos 设置静态ip
    xdist ModuleNotFoundError: No module named 'xxxx',xxx为自定义的模块
    python eval 内置函数用法
    windows使用python脚本实现ssh-copy-id免密钥ssh登录linux
  • 原文地址:https://www.cnblogs.com/langhua/p/2308163.html
Copyright © 2020-2023  润新知