详解ASP.NET提取多层嵌套json数据的方法
时间:2017-11-22 16:35:06|栏目:ASP.NET|点击: 次
      
	本文实例讲述了ASP.NET利用第三方类库Newtonsoft.Json提取多层嵌套json数据的方法,具体例子如下。
	假设需要提取的json字符串如下:
	{"name":"lily","age":23,"addr":{"city":guangzhou,"province":guangdong}}
	先引用命名空间:
	using Newtonsoft.Json;
	using Newtonsoft.Json.Linq;
	可以把上面的json字符串看成一个对象,只要编写对应的类即可(如果使用VS2013进行开发,可以通过“编辑--选择性粘贴--将JSON粘贴为类”快速地将json字符串转换为实体类)
	public class UserInfo
	{
	 public string name;
	 public int age;
	 public address addr;
	}
	public class address
	{
	 public string city;
	 public string province;
	}
	1、将json字符串转换为实体对象的代码如下:
	string jsonData="{\"name\":\"lily\",\"age\":23,\"addr\":{\"city\":guangzhou,\"province\":guangdong}}";
	UserInfo user=(UserInfo)JsonConvert.DeserializeObject(jsonData, typeof(UserInfo));
	2、读取json中某个属性的值可以使用一下代码:
	JObject jsonObj = JObject.Parse(jsonData);
	string name=jsonObj ["name"].ToString();
	string age=jsonObj ["age"].ToString();
	string city=((JObject )jsonObj ["addr"])["city"].ToString();
	string province=((JObject )jsonObj ["addr"])["province"].ToString();
	3、解释多层嵌套json,获取任意属性的值:
	如果需要处理的json字符串如下:
	{"name":"lily","age":23,"addr":{"city":guangzhou,"province":guangdong}};
	然后让你输入一个对象,如“city”,系统就会输出“guangzhou”,输入“age”,就输出“23”。由于json是多级嵌套的,所以需要逐个遍历,代码如下:
	public string GetJsonValue(JEnumerable<JToken> jToken, string key)
	{
	 IEnumerator enumerator = jToken.GetEnumerator();
	 while (enumerator.MoveNext())
	 {
	  JToken jc = (JToken)enumerator.Current;
	  if (jc is JObject || ((JProperty)jc).Value is JObject)
	  {
	   return GetJsonValue(jc.Children(), key);
	  }
	  else
	  {
	   if (((JProperty)jc).Name == key)
	   {
	    return ((JProperty)jc).Value.ToString();
	   }
	  }
	 }
	 return null;
	}
	调用GetJsonValue的代码:
	string jsonData = "{\"name\":\"lily\",\"age\":23,\"addr\":{\"city\":\"guangzhou\",\"province\":\"guangdong\"}}";
	JObject jsonObj = JObject.Parse(jsonData);
	Response.Write(GetJsonValue(jsonObj.Children(), "province"));
	如果是多层嵌套的数组,也可以使用以下代码:
	string jsonData = "{\"addr\":[{\"city\":\"guangzhou\",\"province\":\"guangdong\"},{\"city\":\"guiyang\",\"province\":\"guizhou\"}]}";
	JObject jsonObj = JObject.Parse(jsonData);
	JArray jar = JArray.Parse(jsonObj["addr"].ToString());
	JObject j = JObject.Parse(jar[0].ToString());
	Response.Write(j["city"]);
	4、JSON转XML:
	string xmlstr=((XmlDocument)JsonConvert.DeserializeXmlNode(jsonData)).InnerXml.ToString();
      栏 目:ASP.NET
本文地址:http://nb.sd.cn/ASP_NET/28.html
您可能感兴趣的文章
- 09-12ASP+mssql网站移值到linux/debian11服务器
- 11-23移动互联网广告有哪些模式?
- 11-23网站打开速度慢解决办法
- 11-23草根站长为什么喜欢做门户站
- 11-23网站投放广告如何达到最好的效果
- 11-22.net 应对网站访问压力的方案总结
- 11-22.net 应对网站访问压力的方案总结
- 11-22详解ASP.NET提取多层嵌套json数据的方法
- 11-22ASP.NET MVC分页问题解决
- 11-22ASP.NET编程简单实现生成静态页面的方法


阅读排行
推荐教程
- 09-12ASP+mssql网站移值到linux/debian11服务器
- 11-23移动互联网广告有哪些模式?
- 11-22.net 应对网站访问压力的方案总结
- 11-22详解ASP.NET提取多层嵌套json数据的方法
- 11-22.net 应对网站访问压力的方案总结
- 11-23网站投放广告如何达到最好的效果
- 11-23网站打开速度慢解决办法
- 11-23草根站长为什么喜欢做门户站
- 11-22ASP.NET MVC分页问题解决
- 11-22ASP.NET编程简单实现生成静态页面的方法



