次のように、ネストされた JSON を逆シリアル化しています。
string json = @"{
""name"": ""charlie"",
""someID"": 123,
""level1"" : {
""name"": ""charlie 1"",
""someID"": 456
}
}";
JavaScriptSerializer serializer = new JavaScriptSerializer();
Dictionary<string, object> data = serializer.Deserialize<Dictionary<string, object>>(json);
これが完了すると、各ディクショナリ キーの値は別のディクショナリなど、複数レベルの深さになります。
私がやりたいことは、マルチレベルデータをフラット化して、すべての JSON 属性名とその値だけを含むフラットな配列/リストにすることです。私はこのようなものになるように:
name, "charlie"
someID, 123
name, charlie 1
someID, 456
私はSelectMany()などを使用する道を進んでいましたが、私が求めていることを行うためにそれを論争することができませんでした。
私は次のようなことをいじっています:
var obj = data.Values.SelectMany<object, Dictionary<string, object>>(x => x);
しかし、私はコンパイラを満足させることができません。はい、迷っています。
.NET 3.5 を使用しています。