Home >Backend Development >C#.Net Tutorial >Detailed explanation of ASP.NET's method of extracting multi-layer nested json data

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

高洛峰
高洛峰Original
2017-02-10 17:02:021997browse

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!

Statement:
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