我有一个Json服务我无法改变,因为它不是我的。 他们的Json格式化,解析它很困难。它看起来像这样。
"people": {
"Joe Bob": {
"name": "Joe Bob",
"id": "12345"
},
"Bob Smith": {
"name": "Bob Smith",
"id": "54321"
}
},
我真的更喜欢这个像JSon数组一样,但它目前不是。 我想知道这里最好的方法。在解析它或加载ExtensionData并从中解析它之前,我应该将Json改为看起来像一个数组吗?
Feed中还有其他项目我没有问题。只是坚持这一部分。
由于
答案 0 :(得分:0)
您可以使用json.net反序列化数据(您粘贴的json,只执行一次解析,而不修改任何内容)。
使用dynamic foo = JsonConvert.DeserializeObject<dynamic>(data)
而且,您可以使用foo.people
迭代列表,访问名称和值。
您可以创建一个类(如果您知道模式是什么,并将数据反序列化为给定类的列表,例如:
public class People
{
[JsonProperty(PropertyName="people")]
public IDictionary<string, Person> Persons { get; set; }
}
public class Person
{
[JsonProperty(PropertyName="name")]
public string Name { get; set; }
[JsonProperty(PropertyName = "id")]
public string Id { get; set; }
}
而不是打电话:
var obj = JsonConvert.DeserializeObject<People>(data);
foreach (var item in obj.Persons.Values)
{
//item is instance of Person
}
另一个好的和可能的选择是: How can I navigate any JSON tree in c#?