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 "";
}