gpt4 book ai didi

.net - 如何使用 Json.NET 为数组中的每个对象反序列化带有 "root"元素的 JSON 数组?

转载 作者:行者123 更新时间:2023-12-03 09:30:21 26 4
gpt4 key购买 nike

我有以下 JSON 字符串:

[
{ "Person" : { "Name" : "John", "Gender" : "male" } },
{ "Person" : { "Name" : "John", "Gender" : "male" } }
]

(不幸的是,您可能会注意到,我为数组中的每个对象都有一种“根”元素。没有这个“根”元素,任务变得非常简单。)

我必须将其反序列化为 Person 的列表类(class):
class Person {
public string Name { get; set; }
public string Gender { get; set; }
}
...
List<Person> ListPersons() {
return JsonConvert.DeserializeObject<List<Person>>(jsonString);
}

可以用 Json.NET 做吗?不创建像 PersonResult 这样的包装类?
class PersonResult {
public Person Person { get; set; }
}
...
List<Person> ListPersons() {
return JsonConvert.DeserializeObject<List<PersonResult>>(jsonString)
.Select(p => p.Person)
.ToList();
}

对我来说完美的解决方案是能够以某种方式明确指定这个“根”(例如通过属性)并且不创建任何包装器、帮助器等。

最佳答案

不幸的是,您对此问题无能为力。这就是 JSON 格式的样子,没有办法解决这个问题。结果,Json.Net 或多或少地“看到”了您的字符串:

an array of objects with Person property, which is another object with Name and Gender properties



你可以用自定义玩一些 ContractResolvers强制序列化程序以不同的方式工作......但这是相当多的工作。你建议的包装类是如何处理这些问题的,我建议坚持下去。

关于.net - 如何使用 Json.NET 为数组中的每个对象反序列化带有 "root"元素的 JSON 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8751570/

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