-
C#教程之C#实现对Json字符串处理实例
本文实例讲述了C#实现对Json字符串处理方法,分享给大家供大家参考。具体分析如下:
一般对于web应用开发人员来说对Json字符串都会很熟悉,其实在很多请求我们返回的都是Json字符串。那对于C#代码如何处理Json字符串呢,.Net封装了一个类叫做JavaScriptSerializer[MSDN Library 链接:http://msdn.microsoft.com/en-us/library/ee191864(v=vs.110).aspx];这个类提供了一个方法。
下面这个是在快递100往抓取的一个圆通的快递信息。对于我们有用的信息是快递时间,快递状况。那我该如何来做。
1
|
{ "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结构对应,名称需要保持一样[忽略大小写],其次对应的字段说会自动转换类型的,类型如果不符合会抛出异常
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TestJson { public class PostalDeliveryModel { private string message = string .Empty; private string nu = string .Empty; private List<SingalData> data = new List<SingalData>(); // Puclic的名字需要与Json字符串相同,但是忽略大小写 public string Message { get { return this .message; } set { this .message = value; } } public string Nu { get { return this .nu; } set { this .nu = value; } } public List<SingalData> Data { get { return this .data; } set { this .data = value; } } } public class SingalData { private DateTime time = System.DateTime.Now; private string context = string .Empty; private DateTime ftime = System.DateTime.Now; public DateTime Time { get { return this .time; } set { this .time = value; } } public DateTime FTime { get { return this .ftime; } set { this .ftime = value; } } public string Context { get { return this .context; } set { this .context = value; } } } } |
2.对象什么好后只需要调用方法即可:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Web.Script.Serialization; // 此命名空间对应的框架是 System.Web.Extensions namespace TestJson { public class Program { public static void Main( string [] args) { string jsonStr = new StreamReader( "JsonData.txt" ).ReadToEnd(); PostalDeliveryModel mode = new JavaScriptSerializer().Deserialize<PostalDeliveryModel>(jsonStr); Console.ReadKey(); } } } |
3.运行监控model对象.数据已经在对象里面了。
4.方法回顾,虽然获取到了。不过这种方法类的Public属性名称必须与Json字符串对应,不知道可否通过在Public属性的上面加上[标签]来映射,这样可以自定义名称,不再需要与Json里面名称一样。感兴趣的朋友可以对此进一步研究一下!
希望本文所述对大家C#程序设计的学习有所帮助。
栏目列表
最新更新
python爬虫及其可视化
使用python爬取豆瓣电影短评评论内容
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比