我将以下JSON有效负载从JavaScript Angular应用程序发布到webapi服务:
{注:“测试”,ID:[606,603]}
this.http.post(url, {"Notes": "test", "Ids": [606,603]}, options)
我正在尝试将其反序列化为.net字典,如:
[HttpPost]
public IHttpActionResult Test(Dictionary<string,string> formData)
{
}
(我也尝试添加[FromBody]装饰器。)
如果我不包含数组,这可以正常工作。但是对于数组,我得到了几个解析错误:
解析值时遇到意外的字符:[。路径'Ids',第1行,第23位。 JavaScript属性标识符字符无效:]。 Path'Ids',第1行,第30位。
答案 0 :(得分:1)
您发布的“JSON”无效JSON - 您可以使用JSONLint之类的工具来验证您的JSON。
您的数据的正确JSON语法是:
{
"Notes": "test",
"Ids": [606, 603]
}
此外 - 该方法采用Dictionary<string,string>
个对象。您的数组不是字符串,因此在尝试将数组反序列化为字符串时控制器将失败。
我的建议是创建一个控制器方法应该接收的模型。像这样:
[HttpPost]
public IHttpActionResult Test(YourModel data)
{
}
class YourModel
{
public string Notes {get;set;}
public int[] Ids {get;set;}
}
使用此代码,控制器会将您的JSON(当您更正了JSON语法问题时)反序列化为YourModel
的实例。