gpt4 book ai didi

C# 反序列化根 JSON 未知键

转载 作者:太空宇宙 更新时间:2023-11-03 14:51:08 24 4
gpt4 key购买 nike

我有一个像这样的 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;}
}

如果我这样做,则对象字段在反序列化后为空。

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

任何其他方法将不胜感激,提前致谢。

最佳答案

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

结果:

result


更新:

由于您已经更改了问题中的原始 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);

关于C# 反序列化根 JSON 未知键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51748457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com