使用 dynamic 标记解析JSON字符串_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 使用 dynamic 标记解析JSON字符串

使用 dynamic 标记解析JSON字符串

 2014/12/18 13:24:42  陶陶的兔二  程序员俱乐部  我要评论(0)
  • 摘要:1stringjsonStr="{\"data\":{\"ssoToken\":\"70abd3d8a6654ff189c482fc4842468c\",\"account\":\"admin\",\"userType\":\"platformAdmin\",\"realName\":\"超级管理员\",\"sex\":0,\"sexName\":\"男\",\"email\":\"alina_dong@163.com\",\"mobile\":\"15120757948\"
  • 标签:使用 字符串 JSON 解析 JS
1 string jsonStr = "{\"data\": {\"ssoToken\": \"70abd3d8a6654ff189c482fc4842468c\",\"account\":\"admin\",\"userType\":\"platformAdmin\",\"realName\": \"超级管理员\",\"sex\": 0,\"sexName\":\"男\",\"email\":\"alina_dong@163.com\",\"mobile\":\"15120757948\",\"createdDt\": \"2013-08-16 00:00:00\",\"updatedDt\": \"2014-12-10 00:00:00\" },\"isSuccess\": true}"; 

当 .Net 程序接收到了这段JSON字符串数据的时候,大家肯定会想到使用 Newtonsoft.Json 去序列化(SerializeObject)和反序列化(DeserializeObject)一个对象。

使用 SerializeObject 的示例:

 1 A a = new A();
 2 a.age = 11;
 3 a.name = "Jack";
 4 B b = new B();
 5 b.sex = "Man";
 6 //b.money = 12;
 7 a.B = b;
 8 string str = Newtonsoft.Json.JsonConvert.SerializeObject(a);
 9 
10 输出结果:{"age": 11, "name": "Jack", "B": {"sex": "Man", "money": ""}}

使用 DeserializeObject 的示例:

1 string jsonStr = @"{"age": 11, "name": "Jack", "B": {"sex": "Man", "money": ""}}";
2 var a = Newtonsoft.Json.JsonConvert.DeserializeObject<A>(jsonStr);
3 
4 结果:a.age = 11;.......

好了,言归正传,如何使用 dynamic 去解析一个Json字符串呢?

1 string jsonStr = "{\"data\": {\"ssoToken\": \"70abd3d8a6654ff189c482fc4842468c\",\"account\":\"admin\",\"userType\":\"platformAdmin\",\"realName\": \"超级管理员\",\"sex\": 0,\"sexName\":\"男\",\"email\":\"alina_dong@163.com\",\"mobile\":\"15120757948\",\"createdDt\": \"2013-08-16 00:00:00\",\"updatedDt\": \"2014-12-10 00:00:00\" },\"isSuccess\": true}"; 
2 
3 var user = loginInfo.data; var loginInfo = JsonConvert.DeserializeObject<dynamic>(jsonStr); 
4 
5 string ssoToken = user.ssoToken; 
6 string account = user.account;

这样,不用创建loginInfo,user照样能解析JSON而且不会因为那边增加字段报错啦。

陶陶的兔二,与你分享...

发表评论
用户名: 匿名