我已经成功反序列化了一个简单的json对象,但是当我使用POST请求向控制器发送json对象数组时,它失败了。这是我的代码:
[HttpPost]
public string addWwarehouse([FromBody] warehouse warehouses)
{
System.Diagnostics.Debug.WriteLine(warehouses[0].name);
return "success";
}
这是有效的json数据:
{
"warehouses":
{
"name":"WarehouseA",
"location":"locationA"
}
}
但是当我使用这样的数组时,
[{
"warehouses":
{
"name":"WarehouseA",
"location":"locationA"
}
}]
它不起作用。我也尝试使用List<warehouse>
,但还是没有运气。这是我的warehouse
课:
public class warehouse {
public string name { get; set; }
public string location { get; set; }
}
答案 0 :(得分:2)
欢迎使用StackOverflow。
不是因为您的模型不是List<warehouse>
:
[{
"warehouses":
{
"name":"WarehouseA",
"location":"locationA"
}
}]
它是对象每个的数组,它们的属性为“仓库”,其中包含类型为warehouse
的单个对象。您可能想发送一系列仓库:
[{
"name":"WarehouseA",
"location":"locationA"
}, {
"name":"WarehouseB",
"location":"locationB"
}]
并将其反序列化为List<warehouse>
P.S。 如果您无法控制json格式,那么@TiagoÁvila的答案应该可以解决问题。
让我们检查一下模型:
[{ // [...] - array of some outer objs
"warehouses": // with single property
{
"name":"WarehouseA", // inner obj that resides inside outer obj
"location":"locationA"
}
}]
答案 1 :(得分:1)
由于您的json的使用方式,您需要一个这样的类:
public class Warehouses
{
public string name { get; set; }
public string location { get; set; }
}
public class RootObject
{
public Warehouses warehouses { get; set; }
}
然后,在您的操作中应该这样:
public string addWwarehouse([FromBody] RootObject warehouses)
我认为这会解决。