zoukankan      html  css  js  c++  java
  • 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);

     
     
     

  • 相关阅读:
    Ubuntu 系统中设置环境变量 PATH 的方法
    JSP页面EL表达式无效的问题
    用超链接提交表单并传递一个参数
    sql触发器应用SQL中DateTime转换成Varchar样式
    算法导论第二章 习题作业记录
    【欧拉题四】三位数乘积所得的最大回文数
    Linux64下mysql安装和开发
    算法导论第三章 学习笔记
    【欧拉3】最大质因数
    常用linux命令/工具
  • 原文地址:https://www.cnblogs.com/langhua/p/2308163.html
Copyright © 2011-2022 走看看