Home >Backend Development >C#.Net Tutorial >Detailed explanation of ASP.NET's method of extracting multi-layer nested json data
This article mainly introduces the method of ASP.NET to extract multi-layer nested json data, and the method of using the third-party class library Newtonsoft.Json to extract multi-layer nested json data. Those who are interested can learn about it.
The example in this article describes the method of ASP.NET using the third-party class library Newtonsoft.Json to extract multi-layer nested json data. The specific example is as follows.
Assume that the json string that needs to be extracted is as follows:
{"name":"lily","age":23,"addr":{"city":guangzhou,"province":guangdong}}
First quote the namespace:
using Newtonsoft.Json; using Newtonsoft.Json.Linq;
You can regard the above json string as an object, just write the corresponding class (if you use VS2013 for development, you can use "Edit--Paste Special--Paste JSON as a class" "Quickly convert json string to entity class)
public class UserInfo { public string name; public int age; public address addr; } public class address { public string city; public string province; }
1. The code to convert json string to entity object is as follows:
string jsonData="{\"name\":\"lily\",\"age\":23,\"addr\":{\"city\":guangzhou,\"province\":guangdong}}"; UserInfo user=(UserInfo)JsonConvert.DeserializeObject(jsonData, typeof(UserInfo));
2. To read the value of an attribute in json, you can use the following code:
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 , interpret multi-layer nested json, and get the value of any attribute:
If the json string that needs to be processed is as follows:
{"name":"lily","age":23,"addr":{"city":guangzhou,"province":guangdong}};
Then let If you input an object, such as "city", the system will output "guangzhou", and if you input "age", it will output "23". Since json is multi-level nested, it needs to be traversed one by one. The code is as follows:
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; }
Code for calling GetJsonValue:
string jsonData = "{\"name\":\"lily\",\"age\":23,\"addr\":{\"city\":\"guangzhou\",\"province\":\"guangdong\"}}"; JObject jsonObj = JObject.Parse(jsonData); Response.Write(GetJsonValue(jsonObj.Children(), "province"));
If it is a multi-layer nested array, you can also use the following code:
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 to XML:
Copy the code The code is as follows:
string xmlstr=((XmlDocument)JsonConvert.DeserializeXmlNode(jsonData)).InnerXml.ToString();
The above is the entire content of this article. I hope it will be helpful to everyone's study. I also hope that everyone will support the PHP Chinese website.
For more detailed explanations on how ASP.NET extracts multi-layered nested json data, please pay attention to the PHP Chinese website for related articles!