C#是一種面向?qū)ο蟮木幊陶Z言,遞歸是其中一個常用的技術(shù)。在處理JSON Tree時,遞歸也是非常重要的一種方法。
using Newtonsoft.Json.Linq; public class JsonTree { public void ReadJsonTree(JToken node) { if (node is JValue) { Console.WriteLine(node); } else if (node is JArray) { foreach (JToken child in node.Children()) { ReadJsonTree(child); } } else if (node is JObject) { foreach (JProperty child in node.Children()) { Console.WriteLine(child.Name); ReadJsonTree(child.Value); } } } }
以上代碼是一個簡單的JSON Tree遞歸讀取程序,可以處理任何層次的JSON Tree。
首先,添加Newtonsoft.Json命名空間,通過JToken來表示JSON Tree的節(jié)點(diǎn)。
代碼中的ReadJsonTree方法是一個遞歸方法,它先檢查節(jié)點(diǎn)的類型。
如果節(jié)點(diǎn)是個JValue,直接輸出節(jié)點(diǎn)的值。
如果節(jié)點(diǎn)是個JArray,遍歷數(shù)組中的每個元素,遞歸調(diào)用ReadJsonTree方法來處理其中的節(jié)點(diǎn)。
如果節(jié)點(diǎn)是個JObject,遍歷對象的每一個屬性,先輸出屬性的名稱,再遞歸調(diào)用ReadJsonTree方法來處理屬性對應(yīng)的節(jié)點(diǎn)。
通過使用以上的代碼,我們可以處理任何層次的JSON Tree。