C#反序列化根JSON未知密钥

我有这样的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" } 

类似于这个问题,除了给出的答案不起作用,因为我没有创造像这样的类的奢侈

 public class RootObject { public Dictionary Objects {get; set;} } 

如果我这样做,则反序列化后,Objects字段为null。

根对象和书对象都是动态的。

任何其他方法将不胜感激,在此先感谢。

因为您拥有的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>(json); 

结果:

结果


更新:

由于您在问题中更改了原始JSON,因此第二个给定的JSON可以反序列化:

类:

 public class RootObject { [JsonExtensionData] public Dictionary Items { get; set; } [JsonProperty("random")] public string Random { get; set; } [JsonProperty("other")] public string Other { get; set; } } 

反序列化:

 var result = JsonConvert.DeserializeObject(json);