asp.net core 接收 payload application/json 参数,payload有点特殊,不像普通的get或者post那样key、value对应,而application/json只是给服务器返回一个json数据,所以不能类似a=1&b=2,用string a,string b接收,两种办法处理这个问题
1、用模型
比如json,他本身是一个数组,那么像对应的用List
[ { "ContentId": 4, "ContentCategoryId": 0, "Title": "他在网吧苦练多年 最终代表中国赢下WCG世界冠军1", "Sort": 100, "AddTime": "2018-11-21T14:57:58.64062", "UpdateTime": "2018-11-21T02:56:38", "Hits": 0, "ContentCategory": null }, { "ContentId": 13, "ContentCategoryId": 0, "Title": "他在网吧苦练多年 最终代表中国赢下WCG世界冠军2", "Sort": 100, "AddTime": "2018-11-21T14:57:58.64062", "UpdateTime": "2018-11-21T02:56:38", "Hits": 0, "ContentCategory": null }]
public string Sort([FromBody]List<Models.V_Content> list) { return ""; }
2、用object 或者dynamic
我在开发中遇到必须要传一个对象,而不能是数组,比如vue的axios,
axios.post('/admin/Content/sort', {"list":this.list}, )
json:
{ "list": [ { "ContentId": 4, "ContentCategoryId": 0, "Title": "他在网吧苦练多年 最终代表中国赢下WCG世界冠军1", "Sort": 100, "AddTime": "2018-11-21T14:57:58.64062", "UpdateTime": "2018-11-21T02:56:38", "Hits": 0, "ContentCategory": null }, { "ContentId": 13, "ContentCategoryId": 0, "Title": "他在网吧苦练多年 最终代表中国赢下WCG世界冠军2", "Sort": 100, "AddTime": "2018-11-21T14:57:58.64062", "UpdateTime": "2018-11-21T02:56:38", "Hits": 0, "ContentCategory": null }] }
那么此时就用用object 或者dynamic
[HttpPost] public string Sort([FromBody]object json) { JObject jObject = JObject.Parse(json.ToString()); var data = jObject.SelectToken("list").ToString(); var list = JsonConvert.DeserializeObject<List<Models.V_Content>>(data); ..... return ""; }