c#中使用json格式進行數據傳輸和存儲已經成為網絡開發的基礎。常常會面臨的問題是,json數據可能會包含多層嵌套。如何對多層嵌套的json數據進行遍歷,是c#程序員必須面對的問題。
// 假設以下是一段多層嵌套的json數據 string jsonStr = @" { 'name': 'John', 'age': 30, 'cars': [ { 'model': 'BMW 230', 'mpg': 27.5, 'year': 2016, 'accessories': [ { 'name': 'XM Radio', 'price': 42.95 }, { 'name': 'Maple Wood Trim', 'price': 895 } ] }, { 'model': 'Ford Edge', 'mpg': 24.1, 'year': 2017, 'accessories': [ { 'name': 'Trailer Hitch', 'price': 350.00 } ] } ] }"; // 先將json字符串轉換為JObject對象 JObject jsonObj = JObject.Parse(jsonStr);
上面的代碼中,我們使用Newtonsoft.Json庫將json字符串轉換為JObject對象,以便于后續的遍歷操作。
// 遍歷json數據的第一層 foreach(JProperty property in jsonObj.Properties()) { Console.WriteLine(property.Name + ":" + property.Value); } // 遍歷json數據的第二層,以cars為例 foreach (JObject obj in jsonObj["cars"]) { foreach (JProperty property in obj.Properties()) { Console.WriteLine(property.Name + ":" + property.Value); } } // 遍歷json數據的第三層,以accessories為例 foreach (JObject obj in jsonObj["cars"]) { foreach (JObject access in obj["accessories"]) { foreach (JProperty property in access.Properties()) { Console.WriteLine(property.Name + ":" + property.Value); } } }
上面的代碼中,我們使用了JObject下的Properties()方法獲取json數據中的所有屬性,然后使用foreach遍歷輸出。當遍歷到包含數組類型的屬性時,我們需要使用foreach遍歷數組中的每一個對象。
遍歷多層嵌套的json數據,需要使用嵌套的foreach語句。手動遍歷的方式有些不太方便,當然也可以使用遞歸的方式進行遍歷,但原理都是一樣的。使用Newtonsoft.Json庫,遍歷多層嵌套的json數據就變得輕松簡單。