C# 在不工作的控制器中反序列化JSON
我在.Net Core(3.1)中有以下控制器方法: 在网络选项卡中,正在传递以下JSON:C# 在不工作的控制器中反序列化JSON,c#,json,.net,C#,Json,.net,我在.Net Core(3.1)中有以下控制器方法: 在网络选项卡中,正在传递以下JSON: {"orders": [ {"product":"zzzz","ordertotal":"12"}, {"product":"xxxx","ordertotal":"23"} ]} 在控制器方法中,数据以nu
{"orders":
[
{"product":"zzzz","ordertotal":"12"},
{"product":"xxxx","ordertotal":"23"}
]}
在控制器方法中,数据以null形式通过。我的猜测是它不能正确地反序列化它。有人知道为什么会这样吗?两件事
OrderTotal
就像一个字符串,您的模型需要十进制IEnumerable
数组,但发送的对象包含带有数组的属性2
,您可以创建一个新的RequestModel,如
public class OrderRequestModel
{
public IList<Order> orders { get; set; }
}
公共类OrderRequestModel
{
公共IList命令{get;set;}
}
并更改控制器签名,如
public async Task<ActionResult> UpdateOrders([FromBody]OrderRequestModel order)
公共异步任务两件事
OrderTotal
就像一个字符串,您的模型需要十进制
您需要的是订单的IEnumerable
数组,但发送的对象包含带有数组的属性
对于2
,您可以创建一个新的RequestModel,如
public class OrderRequestModel
{
public IList<Order> orders { get; set; }
}
公共类OrderRequestModel
{
公共IList命令{get;set;}
}
并更改控制器签名,如
public async Task<ActionResult> UpdateOrders([FromBody]OrderRequestModel order)
公共异步任务好的,这里有一些问题:
您的身体应该是这样的,以便与您的模特相匹配:
{"orders":
[
{"product":"zzzz","orderTotal":12},
{"product":"xxxx","orderTotal":23}
]}
或:
您应该使用以下方法定义对象,以便能够正确地反序列化对象:
public partial class Order
{
[JsonProperty("product")]
public string Product { get; set; }
[JsonProperty("ordertotal")]
[JsonConverter(typeof(ParseStringConverter))]
public long Ordertotal { get; set; }
}
在任何情况下,最好使用OrderTotal
而不是OrderTotal
好的,这里有一些问题:
您的身体应该是这样的,以便与您的模特相匹配:
{"orders":
[
{"product":"zzzz","orderTotal":12},
{"product":"xxxx","orderTotal":23}
]}
或:
您应该使用以下方法定义对象,以便能够正确地反序列化对象:
public partial class Order
{
[JsonProperty("product")]
public string Product { get; set; }
[JsonProperty("ordertotal")]
[JsonConverter(typeof(ParseStringConverter))]
public long Ordertotal { get; set; }
}
在任何情况下,最好使用OrderTotal
而不是OrderTotal
什么是null
?事实上,OrderTotal
的名称和类型是不同的。您也不希望在引号中包装数字,这不是一个具有属性“orders”的对象这是一个订单列表,而不是列表本身?什么是null
?事实上,ordertotal
的名称和类型不同。您也不希望将数字包装在引号中这不是一个具有属性“Orders”的对象,它本身是订单列表而不是列表吗?