本篇文章主要介绍了ASP.NET提取多层嵌套json数据的方法,利用第三方类库Newtonsoft.Json提取多层嵌套json数据的方法,有兴趣的可以了解一下。
本文实例讲述了ASP.NET利用第三方类库Newtonsoft.Json提取多层嵌套json数据的方法,具体例子如下。
假设需要提取的json字符串如下:
{
"name"
:
"lily"
,
"age"
:23,
"addr"
:{
"city"
:guangzhou,
"province"
:guangdong}}
先引用命名空间:
using
Newtonsoft.Json;
using
Newtonsoft.Json.Linq;
public
class
UserInfo
{
public
string
name;
public
int
age;
public
address addr;
}
public
class
address
{
public
string
city;
public
string
province;
}
string
jsonData=
"{\"name\":\"lily\",\"age\":23,\"addr\":{\"city\":guangzhou,\"province\":guangdong}}"
;
UserInfo user=(UserInfo)JsonConvert.DeserializeObject(jsonData,
typeof
(UserInfo));
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();
{
"name"
:
"lily"
,
"age"
:23,
"addr"
:{
"city"
:guangzhou,
"province"
:guangdong}};
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
;
}
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"
]);
原文:http://www.cnblogs.com/sjqq/p/6435617.html