【发布时间】:2021-03-06 00:28:34
【问题描述】:
我正在处理错误:
Newtonsoft.Json.JsonSerializationException:无法创建和填充列表类型 UpdatePurchaseOrders.SalesOrderSummaryCollection。路径'',第 1 行, 位置 1。
JSON:
[
{
"OrderNumber": "017323906",
"PONumber": "PON023329",
"DocType": "ZOR",
"Status": "On Hold",
"Total": 83899.1600,
"DateEntered": "3/2/2021 11:05 AM",
"LastChanged": "3/4/2021 7:19 AM"
}
]
我有两个正在测试的课程。第一个是具有与 JSON 匹配的属性的对象。
[JsonArray]
public class SalesOrderSummary
{
public string OrderNumber { get; set; }
public string PONumber { get; set; }
public string DocType { get; set; }
public string Status { get; set; }
public float Total { get; set; }
public string DateEntered { get; set; }
public string LastChanged { get; set; }
}
第二个我正在调用一个 collection 对象,它只有第一个对象的数组。
[JsonArray]
public class SalesOrderSummaryCollection
{
public SalesOrderSummary[] result { get; set; }
}
我去年在另一个项目中使用了这个确切的概念,它工作得非常好 - 没有使用任何 JSON 属性。
在这个当前的项目中,我可以尝试反序列化到任一类,但我得到了同样的错误。如果我使用 SalesOrderSummaryCollection 并删除 [JsonArray] 属性,则会收到以以下结尾的错误:
[...] 因为该类型需要 JSON 对象
我犹豫地说我理解,但在我提到的去年的项目中我没有收到此错误。
所以我不知道为什么两个项目之间的相同概念表现不同或如何解决这个问题。
【问题讨论】:
-
我不知道你为什么在
SalesOrderSummary类上有[JsonArray]属性。你的 JSON 不是一个对象,它是一个集合。将其反序列化为SalesOrderSummary[]或List<SalesOrderSummary>。SalesOrderSummaryCollection可能会妨碍您