C#中对于json格式数据的处理

本文主要介绍了C#对json格式字符串的各种情况的处理,尤其是针对浏览器返回的json格式的response

基本环境

  • vs2013
  • .NetFramework4.5
  • 命名空间:using Newtonsoft.Json.Linq

Json字符串不知道key值如何获得value

1
2
3
4
5
6
7
8
9
10
//假设浏览器返回的数据如下:
string response={"672":
{"id": "672",
"level":0,
"children":[
"b9185a050d0540fea32cdd6fdf5e0d7d",
"727dc5216f504174a30475f268a616f8",
"57c8e7da25a34bee832d8fd2cfeed5c1"]
}
}

但是我们不知道“672”这个key的值,他是浏览器随机返回的,这种情况,可以采用如下的方式,使用JProperty:

1
2
3
4
5
6
7
8
9
10
11
12
13
JObject json = JObject.Parse(response); 

//得到json对应的propertyies,实际是一个<key,value>
对象组成的数组,可以遍历和获得value的值
IEnumerable<JProperty> properties = json.Properties();

// 遍历Jproperty对象
foreach(JProperty item in properties)
{
//得到value并转化为object对象,得到子json
JObject node = JObject.Parse(item.Value.ToString());

}

获得Json字符串中的数组

同样是上文中的response,由于children是一个数组,可以采用JToken对象获得数组对象并进行遍历;代码如下(接上文代码):

1
2
3
4
5
6
JToken children =node["children"];
foreach(JProperty child in children)
{
// 即可得到字符串"b9185a050d0540fea32cdd6fdf5e0d7d"等
string name = (string)child;
}
Song wechat
扫一扫,关注微信公众号,订阅我的博客
扫码领红包,支持走一波