本章將和大家分享如何在ASP.NET中使用JObject和JArray解析Json數據。話不多說,下面我們直接來看一個示例。
數據樣例(模擬接口返回的Json字符串),如下所示:
{ "code":1, "msg":"獲取成功", "total":3, "data":[ { "StuId":"10000", "Name":"張三", "Age":18 }, { "StuId":"10001", "Name":"李四", "Age":15 }, { "StuId":"10002", "Name":"王五", "Age":19 } ], "otherinfo":{ "year":2002, "schools":[ { "name":"北京大學", "ranking":1 }, { "name":"清華大學", "ranking":2 }, { "name":"北京航空航天大學", "ranking":3 } ] } }
使用JObject和JArray解析上面的Json數據,如下所示:
using System; using System.Linq; using Newtonsoft.Json.Linq; namespace MyJObjectAndJArray { class Program { static void Main(string[] args) { Show(); } /// <summary> /// 展示 /// </summary> static void Show() { Console.WriteLine("**********************演示開始**********************"); Console.WriteLine(""); //模擬接口返回Json字符串 string strJson = "{\"code\":1,\"msg\":\"獲取成功\",\"total\":3,\"data\":[{\"StuId\":\"10000\",\"Name\":\"張三\",\"Age\":18},{\"StuId\":\"10001\",\"Name\":\"李四\",\"Age\":15},{\"StuId\":\"10002\",\"Name\":\"王五\",\"Age\":19}],\"otherinfo\":{\"year\":2002,\"schools\":[{\"name\":\"北京大學\",\"ranking\":1},{\"name\":\"清華大學\",\"ranking\":2},{\"name\":\"北京航空航天大學\",\"ranking\":3}]}}"; //Json解析 JObject jObject = JObject.Parse(strJson); if (jObject.ContainsKey("code")) //判斷是否包含某個屬性名 { Console.WriteLine("包含屬性名code"); } if (!jObject.ContainsKey("error")) { Console.WriteLine("不包含屬性名error"); } var msg = jObject.ContainsKey("msg") ? jObject.Value<string>("msg") : "無返回信息"; Console.WriteLine($"msg={msg}"); var code1 = Convert.ToInt32(jObject["code"]); //方式1 var code2 = jObject.Value<int>("code"); //方式2 Console.WriteLine($"code1={code1} , code2={code2}"); var year1 = Convert.ToInt32(jObject["otherinfo"]["year"]); //方式1 var year2 = jObject["otherinfo"].Value<int>("year"); //方式2 Console.WriteLine($"year1={year1} , year2={year2}"); var stuId1 = Convert.ToInt32(jObject["data"][0]["StuId"]); var stuId2 = jObject["data"][1].Value<int>("StuId"); JArray data1 = jObject.Value<JArray>("data") ?? new JArray(); //方式1 var stuId3 = Convert.ToInt32(data1[2]["StuId"]); JArray data2 = (JArray)jObject["data"] ?? new JArray(); //方式2 var stuId4 = data2[2].Value<int>("StuId"); Console.WriteLine($"stuId1={stuId1} , stuId2={stuId2} , stuId3={stuId3} , stuId4={stuId4} , data1.Count={data1.Count}"); if (jObject.Value<int>("code") == 1) { var apiData = (jObject.Value<JArray>("data") ?? new JArray()) .Select(m => new { StuId = m.Value<int>("StuId"), Name = m.Value<string>("Name"), Age = m.Value<int>("Age"), }) .ToList(); Console.WriteLine($"apiData.Count={apiData.Count}"); var apiSchools = (jObject["otherinfo"].Value<JArray>("schools") ?? new JArray()) .Select(m => new { name = m.Value<string>("name"), ranking = m.Value<int>("ranking") }) .ToList(); Console.WriteLine($"apiSchools.Count={apiSchools.Count}"); JObject joOtherInfo = (JObject)jObject["otherinfo"]; if (joOtherInfo.ContainsKey("schools")) { var apiSchools2 = (joOtherInfo.Value<JArray>("schools") ?? new JArray()) .Select(m => new { name = m.Value<string>("name"), ranking = m.Value<int>("ranking") }) .ToList(); Console.WriteLine($"apiSchools2.Count={apiSchools2.Count}"); } } Console.WriteLine(""); Console.WriteLine("**********************演示結束**********************"); Console.ReadKey(); } } }
PS:項目中需要引入Newtonsoft.Json程序包。
運行結果如下:
至此本文就全部介紹完了,如果覺得對您有所啟發請記得點個贊哦!!!
Demo源碼:
鏈接:https://pan.baidu.com/s/17K_zqhPSvdj7GlXvekWaYQ 提取碼:grux
此文由博主精心撰寫轉載請保留此原文鏈接:https://www.cnblogs.com/xyh9039/p/14477480.html
版權聲明:如有雷同純屬巧合,如有侵權請及時聯系本人修改,謝謝!!!