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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
[ { "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 }] |
1 2 3 4 |
public string Sort([FromBody]List<Models.V_Content> list) { return ""; } |
2、用object 或者dynamic
我在开发中遇到必须要传一个对象,而不能是数组,比如vue的axios,
1 2 3 |
axios.post('/admin/Content/sort', {"list":this.list}, ) |
json:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
{ "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
1 2 3 4 5 6 7 8 9 |
[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 ""; } |