Json Value不分配给List

由于我是web api的新手,我发现将json List到Web API有些困难。

 Json [ { "ItemId":20, "RegId":"VISIT0001778", "BLoadDetailId":"8/31/2018 12:28:10 PM", "OrderReferenceNo":null, "StartTime":"0001-01-01T00:00:00", "InvalidItemMsg":"", "InvalidItemstatus":false, "BLoadingBay":"Chute 009", "BLoadingBayCode":null, "BLoadingBayID":7, "RFID":7123, "GangId":2, "BOrderTransfer":false, "BLoadedBags":0.0, "BRemainingBags":0.0, "BConversionValue":null, "WHid":2 } ] 

课程:

  public class clsStartTimeUpdate { public int ItemId { get; set; } public string RegId { get; set; } public string BLoadDetailId { get; set; } public string OrderReferenceNo{ get; set; } public DateTime StartTime { get; set; } public string InvalidItemMsg { get; set; } public bool InvalidItemstatus { get; set; } public string BLoadingBay { get; set; } public string BLoadingBayCode { get; set; } public int? BLoadingBayID { get; set; } public long? RFID { get; set; } public int? GangId { get; set; } public bool BOrderTransfer { get; set; } public decimal BLoadedBags { get; set; } public decimal BRemainingBags { get; set; } public string BConversionValue { get; set; } public int? WHid { get; set; } } 

Json请求

 http://localhost:49290/api/config/Post?StartTimeDetails=[enter image description here][1][{%22ItemId%22:20,%22RegId%22:%22VISIT0001778%22,%22BLoadDetailId%22:%228/31/2018%2012:28:10%20PM%22,%22OrderReferenceNo%22:null,%22StartTime%22:%222001-01-01T00:00:00%22,%22InvalidItemMsg%22:%22%22,%22InvalidItemstatus%22:false,%22BLoadingBay%22:%22Chute%20009%22,%22BLoadingBayCode%22:null,%22BLoadingBayID%22:7,%22RFID%22:7123,%22GangId%22:2,%22BOrderTransfer%22:false,%22BLoadedBags%22:0.0,%22BRemainingBags%22:0.0,%22BConversionValue%22:null,%22WHid%22:2}] 

方法WebAPI

 [HttpPost] public HttpResponseMessage Post([FromUri]List StartTimeDetails) { return base.BuildSuccessResult(HttpStatusCode.OK, StartTimeDetails); } 

结果:

 [{"ItemId":0,"RegId":null,"BLoadDetailId":null,"OrderReferenceNo":null,"StartTime":"0001-01-01T00:00:00","InvalidItemMsg":null,"InvalidItemstatus":false,"BLoadingBay":null,"BLoadingBayCode":null,"BLoadingBayID":null,"RFID":null,"GangId":null,"BOrderTransfer":false,"BLoadedBags":0.0,"BRemainingBags":0.0,"BConversionValue":null,"WHid":null}] 

返回结果不会像在Json中那样分配值。 可能这是一个简单的情况,但我真的很感激帮助。

看来你想用HttpGet请求而不是HttpPost传达你的json然后你可以按照下面的HttpGet

1)使用HttpGet发送Json

方法: Get

url: http://localhost:49290/api/config/MyGet?StartTimeDetails=[{%22ItemId%22:20,%22RegId%22:%22VISIT0001778%22,%22BLoadDetailId%22:%228/31/2018%2012:28:10%20PM%22,%22OrderReferenceNo%22:null,%22StartTime%22:%220001-01-01T00:00:00%22,%22InvalidItemMsg%22:%22%22,%22InvalidItemstatus%22:false,%22BLoadingBay%22:%22Chute%20009%22,%22BLoadingBayCode%22:null,%22BLoadingBayID%22:7,%22RFID%22:7123,%22GangId%22:2,%22BOrderTransfer%22:false,%22BLoadedBags%22:0.0,%22BRemainingBags%22:0.0,%22BConversionValue%22:null,%22WHid%22:2}]

Web Api方法:

 [HttpGet] public HttpResponseMessage MyGet(string StartTimeDetails) { List clsStartTimeUpdates = JsonConvert.DeserializeObject>(StartTimeDetails); return base.BuildSuccessResult(HttpStatusCode.OK, StartTimeDetails); } 

注意:在查询字符串中发送巨大的json是不好的做法,所以使用HttpPost代替

2)使用HttpPost发送Json

方法Post

url: http://localhost:49290/api/config/MyPost

数据:

 [ { "ItemId":20, "RegId":"VISIT0001778", "BLoadDetailId":"8/31/2018 12:28:10 PM", "OrderReferenceNo":null, "StartTime":"0001-01-01T00:00:00", "InvalidItemMsg":"", "InvalidItemstatus":false, "BLoadingBay":"Chute 009", "BLoadingBayCode":null, "BLoadingBayID":7, "RFID":7123, "GangId":2, "BOrderTransfer":false, "BLoadedBags":0.0, "BRemainingBags":0.0, "BConversionValue":null, "WHid":2 } ] 

Web Api方法:

 [HttpPost] public HttpResponseMessage MyPost([FromBody]List StartTimeDetails) { return base.BuildSuccessResult(HttpStatusCode.OK, StartTimeDetails); } 

对于复杂类型,请始终在参数中使用[FromBody]。

 [HttpPost] public HttpResponseMessage Post([FromBody]List StartTimeDetails) { return base.BuildSuccessResult(HttpStatusCode.OK, StartTimeDetails); } 

然后在Body中指定您的查询对象。

注意:要指定正文中的值,您需要一个API客户端,如Postman或Swagger。 https://www.getpostman.com/

在邮差中,

选择Post方法并指定URL,然后转到“Body”选项卡并选择raw。 将JSON指定为类型。 在正文中,粘贴您的数据。

  { [ { "ItemId":20, .......... } ]} 

在此处输入图像描述

@ershoaib的其他答案是OP面临的问题的真正解决方案。 但是,我留下这个答案,因为它是应该遵循的标准。

由于您使用的是post,因此您应该期望控制器方法中的数据来自正文。 在此查看相关问题