C#反序列化根JSON未知密钥
我有这样一个JSON,必须反序列化它:C#反序列化根JSON未知密钥,c#,json,serialization,C#,Json,Serialization,我有这样一个JSON,必须反序列化它: { "0": { "foo_id":"xyz", "bar_id":"abc", "book": { "0": { "title":"hello", "author":"person_x" }, "1": { "title":"hi", "author":"person_y" } }, "1": { "
{
"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<string, Object> Objects {get; set;}
}
公共类根对象
{
公共字典对象{get;set;}
}
如果我这样做,则反序列化后对象字段为空
根对象和书本对象都是动态的
任何其他方法都将不胜感激,请提前感谢。因为您的JSON不包含
RootObject
,而包含一个字典,您可以直接反序列化到字典中,如下所示:
类别:
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);
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);
反序列化:
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);
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);
var result=JsonConvert.DeserializeObject(json);
结果:
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);
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);
更新:
由于您已经更改了问题中的原始JSON,第二个给定JSON可以反序列化如下:
类别:
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);
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);
公共类根对象
{
[JsonExtensionData]
公共字典项{get;set;}
[JsonProperty(“随机”)]
公共字符串随机{get;set;}
[JsonProperty(“其他”)]
公共字符串其他{get;set;}
}
反序列化:
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);
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);
var result=JsonConvert.DeserializeObject(json);
因为您拥有的JSON不包含RootObject
,而包含一个字典,所以您可以直接反序列化到字典中,如下所示:
类别:
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);
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);
反序列化:
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);
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);
var result=JsonConvert.DeserializeObject(json);
结果:
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);
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);
更新:
由于您已经更改了问题中的原始JSON,第二个给定JSON可以反序列化如下:
类别:
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);
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);
公共类根对象
{
[JsonExtensionData]
公共字典项{get;set;}
[JsonProperty(“随机”)]
公共字符串随机{get;set;}
[JsonProperty(“其他”)]
公共字符串其他{get;set;}
}
反序列化:
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);
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);
var result=JsonConvert.DeserializeObject(json);
我仍然有一个RootObject类,我想反序列化它,因为它还有一些我需要的其他数据。Thanks@querty123了解完整JSON响应的整个结构对于反序列化非常重要,因为我仍然有一个RootObject类,这是我想要反序列化的,因为它还有一些我需要的其他数据。Thanks@querty123为了反序列化,了解完整JSON响应的整个结构非常重要