我有这样的JSON并且必须反序列化它:
{
"0": {
"foo_id":"xyz",
"bar_id":"abc",
"book": {
"0": {
"title":"hello",
"author":"person_x"
},
"1": {
"title":"hi",
"author":"person_y"
}
},
"1": {
"foo_id":"xyz",
"bar_id":"abc",
"book": {
"0": {
"title":"hello",
"author":"person_a"
},
"1": {
"title":"bye",
"author":"person_b"
}
},
"random":"string",
"other":"thing"
}
类似于this问题,除了给出的答案不起作用,因为我没有创造像这样的类的奢侈
public class RootObject
{
public Dictionary<string, Object> Objects {get; set;}
}
如果我这样做,则反序列化后对象字段为空。
根对象和图书对象都是动态的。
任何其他方法将不胜感激,提前致谢。
答案 0 :(得分:1)
因为您所拥有的JSON 不包含拥有字典的RootObject
,您可以直接反序列化为Dictionary
,如下所示:
<强>类别:强>
public class Item
{
[JsonProperty("foo_id")]
public string FooId { get; set; }
[JsonProperty("bar_id")]
public string BarId { get; set; }
}
<强>反序列化强>
var result = JsonConvert.DeserializeObject<Dictionary<string, Item>>(json);
<强>结果:强>
由于您在问题中更改了原始JSON,因此第二个给定的JSON可以反序列化:
<强>类别:强>
public class RootObject
{
[JsonExtensionData]
public Dictionary<string, JToken> Items { get; set; }
[JsonProperty("random")]
public string Random { get; set; }
[JsonProperty("other")]
public string Other { get; set; }
}
<强>反序列化强>
var result = JsonConvert.DeserializeObject<RootObject>(json);