我有服务会在'json'中收到一些数据,我不知道哪些数据。但是我有可能存在的一组属性。 Json格式是这样的,无法更改,名称可能不同:
{"Parent1":
{"Child1":"Value1","Child2":"Value2"},
"Parent2":
{"Child1":"Value1","Child2":"Value2"},
"Parent3":
{"Child1":
{"SubChild1":"Value1","SubChild2":"Value2"}}
}
我想枚举所有项目以获取密钥:值对。 请注意,层次结构很重要,因为几个对象可以具有相同的键但父级不同。 另请注意,我不知道键,我需要获取键和值,所以我不能直接得到POCO对象。
所以问题基本上是:如何获得一个集合,通过所有属性(具有key和value的访问权限)实现一些迭代器,并支持层次结构。
答案 0 :(得分:2)
您始终可以将JSON输入反序列化为某些(无类型)DOM,您可以在其中遍历代表JSON文档的树。有几个选项:JavaScriptSerializer类,它将JSON反序列化为Dictionary<string, object>
(对于将反序列化为object[]
的数组)。或者您可以使用第三方库,例如JSON.NET,您可以将任意JSON反序列化为JToken / JObject / JArray / JValue树,并使用这些类中的方法遍历它。
答案 1 :(得分:1)