【发布时间】:2022-01-04 15:36:33
【问题描述】:
谁能看到这里的问题?对象“OrderItemPayment”在反序列化过程中由于某种原因变成了一个数组?
当我尝试反序列化如下所示的响应时:
我得到这个结果:
{
"items":[
{
"created_at":"2021-01-28 18:37:45",
"payment":[
]
},
{
"created_at":"2021-01-28 16:06:23",
"payment":[
]
}
]
}
我的课程
[Serializable]
public class Order
{
[JsonProperty("items")]
public OrderItem[]? Items { get; set; }
}
[Serializable]
public class OrderItem
{
[JsonProperty("created_at")]
public string? CreatedAt { get; set; }
[JsonProperty("payment")]
public OrderItemPayment Payment { get; set; } = new OrderItemPayment();
}
[Serializable]
public record OrderItemPayment
{
[JsonProperty("amount_paid")]
public decimal AmountPaid { get; set; }
[JsonProperty("shipping_captured")]
public decimal ShippingCaptured { get; set; }
}
【问题讨论】:
-
初始屏幕截图和模型中的付款是单个对象。在您显示的结果 (
response.Content) 中,它是一个数组。 -
@Llama 是的,这是我的问题。由于支付是一个对象,它应该解析为一个对象而不是一个数组,但我不明白为什么。
-
那么您的问题真的是“如何处理 API 有时将属性作为数组返回,有时作为对象返回?”
-
@Llama 这是一个更好的标题,是的,这真的是我的问题。
标签: c# json serialization