C#实现对Json字符串处理实例
本文实例讲述了C#实现对Json字符串处理方法,分享给大家供大家参考。具体分析如下:
一般对于web应用开发人员来说对Json字符串都会很熟悉,其实在很多请求我们返回的都是Json字符串。那对于C#代码如何处理Json字符串呢,.Net封装了一个类叫做JavaScriptSerializer[MSDNLibrary链接: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-0121:19:06","context":"甘肃省武威市公司已签收","ftime":"2014-09-0121:19:06"},{"time":"2014-09-0109:09:28","context":"甘肃省武威市公司派件中","ftime":"2014-09-0109:09:28"},{"time":"2014-09-0109:06:27","context":"甘肃省武威市公司已收入","ftime":"2014-09-0109:06:27"},{"time":"2014-08-3119:53:47","context":"甘肃省兰州市公司已发出","ftime":"2014-08-3119:53:47"},{"time":"2014-08-3119:17:41","context":"甘肃省兰州市公司已收入","ftime":"2014-08-3119:17:41"},{"time":"2014-08-2823:44:26","context":"广东省深圳市横岗公司已打包","ftime":"2014-08-2823:44:26"},{"time":"2014-08-2823:19:12","context":"广东省深圳市横岗公司已收件","ftime":"2014-08-2823:19:12"},{"time":"2014-08-2821:55:35","context":"广东省深圳市横岗公司已收件","ftime":"2014-08-2821: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 { privateDateTimetime=System.DateTime.Now; privatestringcontext=string.Empty; privateDateTimeftime=System.DateTime.Now; publicDateTimeTime { get{returnthis.time;} set{this.time=value;} } publicDateTimeFTime { 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.Extensions namespaceTestJson { publicclassProgram { publicstaticvoidMain(string[]args) { stringjsonStr=newStreamReader("JsonData.txt").ReadToEnd(); PostalDeliveryModelmode=newJavaScriptSerializer().Deserialize<PostalDeliveryModel>(jsonStr); Console.ReadKey(); } } }
3.运行监控model对象.数据已经在对象里面了。
4.方法回顾,虽然获取到了。不过这种方法类的Public属性名称必须与Json字符串对应,不知道可否通过在Public属性的上面加上[标签]来映射,这样可以自定义名称,不再需要与Json里面名称一样。感兴趣的朋友可以对此进一步研究一下!
希望本文所述对大家C#程序设计的学习有所帮助。