Detailed explanation of ASP.NET's method of extracting multi-layer nested json data

高洛峰
Release: 2017-02-10 17:02:02
Original
1978 people have browsed it

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}}
Copy after login

First quote the namespace:

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
Copy after login

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;
 }
Copy after login

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));
Copy after login

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();
Copy after login

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}};
Copy after login

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;
  }
Copy after login

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"));
Copy after login

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"]);
Copy after login

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!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!