【发布时间】:2020-12-04 06:24:38
【问题描述】:
我有一个要求,我有以下格式的传入 json 对象:
{
"CustomerList": {
"Customer": [{
"CustomerCode" : "C123",
"CustomerName" : "Peter"
},
{
"CustomerCode" : "C456",
"CustomerName" : "John"
}]
}
}
我有以下格式的 C# 对象:
[System.Xml.Serialization.XmlArrayItemAttribute(IsNullable = "false")]
public Customer[] CustomerList
{
get; set;
}
[System.Xml.Serialization.XmlTypeAttribute()]
public class Customer
{
public string CustomerCode {get; set;}
public string CustomerName {get; set;}
}
在使用 JsonConvert.DeserializeObject() 进行反序列化期间,我收到以下错误: 无法将当前 JSON 对象反序列化为 Customer[] 类型,因为该类型需要 JSON 数组(例如 [1,2,3])才能正确反序列化。
就我而言,限制是我不能更改传入的 JSON 对象,也不能修改 C# 对象结构。那么问题来了,有没有办法将传入 Json 中的 Customer 节点直接映射到 CustomerList C# 数组,而无需重命名或更改其中任何一个的结构?
【问题讨论】:
-
public Customer[] CustomerList这是在某个类中声明的!能分享一下反序列化的代码吗? -
是 CustomerList 在类中声明。我没有使用任何自定义反序列化。我只是在 Newtonsoft.Json 库中使用 JsonConvert.DeserializeObject()
-
您需要共享执行反序列化的代码。不管多么简单。它将帮助我们查看代码是否存在问题,并可以相应地提出解决方案。现在看起来您正在反序列化为错误的类型,但没有查看您的代码,这只是一个假设
-
我正在使用通用库,可在此处获得:newtonsoft.com/json,所以它应该没有任何问题
标签: c# xml-parsing xml-serialization json-deserialization jsonserializer