Json.NETで、JSONの葉ノードをすべて列挙する
ちょろっと小ネタ、というか自分用メモ。
Json.NETを使って、C#からJSONファイル内の全ての末端ノードの情報を列挙してみました。
JSONファイルの、↓こういう末端のノードをすべて列挙します。
探索対象のJSONファイルはコレ
{ "app": { "name": "i18nextTest", "sampleText": "This is localized text." }, "menu": { "file": "File", "edit": "Edit" }, "level1": { "level2":{ "sample": "サンプル", "sample2": "ほげほげ" }, "array": [ 12, 23, 34 ] } }
C#のコード
static void Main(string[] args) { var obj = JObject.Parse(File.ReadAllText(@"sample.json")); Traverse(obj); } public static void Traverse(JObject obj) { foreach(var item in obj) { var value = item.Value; // itemがツリー構造の枝/葉のどちらか判定 var isLeaf = value.Type != JTokenType.Object; if (isLeaf) { Console.WriteLine("Path:{0, -25}, {1}", value.Path, value.ToString(Formatting.None)); } else { Traverse((JObject)value); } } }
結果はこんな感じ。
Json.NETメッチャ便利!!