C#基础---C#如何对Json字符串处理

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

Json字符串对于做web应用的应该很熟悉,其实在很多请求我们返回的都是Json字符串。那对于C#代码如何处理Json字符串呢,.Net封装了一个类叫做javaScriptSerializer[MSDN Library 链接http://msdn.microsoft.com/en-us/library/ee191864(v=vs.110).aspx];这个类提供了一个方法。

下面这个是我在快递100往抓取的一个圆通的快递信息。对于我们有用的信息是快递时间,快递状况。那我该如何来做。

{"message":"ok","nu":"9356359685","ischeck":"1","com":"yuantong","status":"200","condition":"F00","state":"3","data":[{"time":"2014-09-01 21:19:06","context":"甘肃省武威市公司 已签收 ","ftime":"2014-09-01 21:19:06"},{"time":"2014-09-01 09:09:28","context":"甘肃省武威市公司 派件中 ","ftime":"2014-09-01 09:09:28"},{"time":"2014-09-01 09:06:27","context":"甘肃省武威市公司 已收入 ","ftime":"2014-09-01 09:06:27"},{"time":"2014-08-31 19:53:47","context":"甘肃省兰州市公司 已发出 ","ftime":"2014-08-31 19:53:47"},{"time":"2014-08-31 19:17:41","context":"甘肃省兰州市公司 已收入 ","ftime":"2014-08-31 19:17:41"},{"time":"2014-08-28 23:44:26","context":"广东省深圳市横岗公司 已打包 ","ftime":"2014-08-28 23:44:26"},{"time":"2014-08-28 23:19:12","context":"广东省深圳市横岗公司 已收件 ","ftime":"2014-08-28 23:19:12"},{"time":"2014-08-28 21:55:35","context":"广东省深圳市横岗公司 已收件 ","ftime":"2014-08-28 21:55:35"}]} 1. 首先分析Json字符串结构. Json{ message,nu,isCheck,Data{time,context,ftime}};我们先定义一个类,取名为PostalDeliveryModel,类名的结构需要与Json结构对应,名称需要保持一样[忽略大小写],其次对应的字段说会自动转换类型的,类型如果不符合会抛出异常

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceTestJson

{publicclassPostalDeliveryModel

{PRivatestringmessage =string.Empty;privatestringnu =string.Empty;privateList<SingalData> data =newList<SingalData>();//Puclic的名字需要与Json字符串相同,但是忽略大小写publicstringMessage

{get{returnthis.message; }set{this.message =value; }

}publicstringNu

{get{returnthis.nu; }set{this.nu =value; }

}publicList<SingalData>Data

{get{returnthis.data; }set{this.data =value; }

}

}publicclassSingalData

{privateDateTime time =System.DateTime.Now;privatestringcontext =string.Empty;privateDateTime ftime =System.DateTime.Now;publicDateTime Time

{get{returnthis.time; }set{this.time =value; }

}publicDateTime FTime

{get{returnthis.ftime; }set{this.ftime =value; }

}publicstringContext

{get{returnthis.context; }set{this.context =value; }

}

}

}

2.对象什么好后只需要调用方法即可:

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.IO;usingSystem.Web.Script.Serialization; // 此命名空间对应的框架是 System.Web.ExtensionsnamespaceTestJson

{publicclassProgram

{publicstaticvoidMain(string[] args)

{stringjsonStr =newStreamReader("JsonData.txt").ReadToEnd();

PostalDeliveryModel mode=newJavascriptSerializer().Deserialize<PostalDeliveryModel>(jsonStr);

Console.ReadKey();

}

}

}

3.运行监控model对象.数据已经在对象里面了。

4.方法回顾,虽然获取到了。不过这种方法类的Public属性名称必须与Json字符串对应,不知道可否通过在Public属性的上面加上[标签]来映射,这样可以自定义名称,不再需要与Json里面名称一样。求其他大牛在评论的时候指点一下。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航