无法解析POST Request的JSON主体中的参数

时间:2018-02-26 11:25:28

标签: c# asp.net json asp.net-mvc

我有一个带有以下方法的asp.net核心MVC控制器

[HttpPost("MyMethod")]
public async Task<IActionResult> TestMethod([FromBody] string[] IDs)
{
    // ...
}

我正在尝试通过带有正文的POST请求调用此方法:

{"IDs":["Test1", "Test2"]}

但是,调用该方法时,ID为null。在我的日志中,我看到一个条目“Microsoft.AspNetCore.Mvc.Formatters.JsonInputFormatter - JSON输入格式化程序引发异常。”,我认为这与此有关。

我在这里做错了什么? 我是否需要以某种方式修改我的C#方法的签名才能正确解析请求的正文?或者请求的正文需要看起来不同才能被服务器读取?

__

编辑:C#中的完整JSON异常似乎是:

  

无法将当前JSON对象(例如{“name”:“value”})反序列化为类型'System.String []',因为该类型需要JSON数组(例如[1,2,3])才能正确反序列化

     

要修复此错误,请将JSON更改为JSON数组(例如[1,2,3])或更改反序列化类型,使其成为普通的.NET类型(例如,不是像整数这样的基本类型,而不是可以从JSON对象反序列化的集合类型,如数组或List)。 JsonObjectAttribute也可以添加到类型中以强制它从JSON对象反序列化。

     

路径'ID',第1行,第9位。

可能与此问题无关,但我通过VBA-Tools for Excel提交POST请求:

Dim Client As New WebClient
Client.BaseUrl = ' ... url to the request

Dim Request As New WebRequest

Request.Method = WebMethod.HttpPost
Request.RequestFormat = JSON
Call Request.AddBodyParameter("IDs", someStringArray)

Dim response As WebResponse
Client.TimeoutMs = 120000
Set response = Client.Execute(Request)

0 个答案:

没有答案