无法将JSON中的数组发布到WebAPI方法

时间:2017-09-19 01:04:08

标签: c# asp.net-web-api

这是我的方法:

[HttpPut("*myUri}")]
    public Task<IActionResult> DoSomething(string myString, [FromBody]string[] myIDs)
{
// DO stuff
}

我在请求正文中发送以下JSON:

{
   "myIDs": ["1","2","3"]
}

为什么调用API时myID为null?

3 个答案:

答案 0 :(得分:0)

您的控制器需要一个字符串数组,但您发送的对象看起来像

{
    myIDs: ["1", "2", "3"]
}

尝试发布只是 JSON.stringify(["1", "2", "3"]),并确保您将内容类型作为应用程序/ json发送

答案 1 :(得分:0)

尝试使用此[FromBody] IEnumerable<string> myIDs代替[FromBody]string[] myIDs并将JSON用作["1","2","3"]

答案 2 :(得分:0)

请开始阅读有关Json的内容。也许here

给定参数[FromBody]string[] myIDs,它期望像这样的Json:

[
    "This is", 
    "your",
    "array of strings."
]

[]定义了一个对象数组。

用你给出的Json:

{
   "myIDs": ["1","2","3"]
}

如果你想获得这种类型的Json,请将你的参数改为:

public IActionResult Post([FromBody]myClass this_Is_Just_A_Name)
    {
        return Ok(this_Is_Just_A_Name);
    }

public class myClass
{
    public string[] myIDs { get; set; }
}