詳解ASP.NET提取多層嵌套json資料的方法

來源:互聯網
上載者:User
本篇文章主要介紹了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;

可以把上面的json字串看成一個對象,只要編寫對應的類即可(如果使用VS2013進行開發,可以通過“編輯--選擇性粘貼--將JSON粘貼為類”快速地將json字串轉換為實體類)

 public class UserInfo {  public string name;  public int age;  public address addr; } public class address {  public string city;  public string province; }

1、將json字串轉換為實體物件的代碼如下:

string jsonData="{\"name\":\"lily\",\"age\":23,\"addr\":{\"city\":guangzhou,\"province\":guangdong}}";UserInfo user=(UserInfo)JsonConvert.DeserializeObject(jsonData, typeof(UserInfo));

2、讀取json中某個屬性的值可以使用一下代碼:

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、解釋多層嵌套json,擷取任意屬性的值:

如果需要處理的json字串如下:

{"name":"lily","age":23,"addr":{"city":guangzhou,"province":guangdong}};

然後讓你輸入一個對象,如“city”,系統就會輸出“guangzhou”,輸入“age”,就輸出“23”。由於json是多級嵌套的,所以需要逐個遍曆,代碼如下:

  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;  }

調用GetJsonValue的代碼:

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

4、JSON轉XML:


複製代碼 代碼如下:


string xmlstr=((XmlDocument)JsonConvert.DeserializeXmlNode(jsonData)).InnerXml.ToString();

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援topic.alibabacloud.com。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.