这是基本的设置,我有一个asp.net核心webapi控制器(在c#中),它有一个post函数,如下所示:
[HttpPost]
public ActionResult<string> Post([FromBody] string Name)
{
//Do some processing with the "Name" argument...
return Ok( "Success!" );
}
我正在尝试将以下原始JSON请求体发送到此函数:
{
"Name": "Foo"
}
但是当使用上面的主体向此函数发送post请求时,我在服务器控制台中找回以下错误:
“执行ObjectResult,写入'Microsoft.AspNetCore.Mvc.SerializableError'类型的值”
而这个错误在客户端
{“”:[“解析值时遇到意外字符:{。路径'',第1行,第1位。” ]}
我尝试在函数开头设置一个断点,但它甚至没有触发!为什么我会收到序列化错误?
可序列化错误实际上是来自JSON.NET的解析错误,但问题实际上与解析JSON无关。
真正的问题是ASP.NET Core期望将JSON主体解析为对象/ DTO。因此,您可以使用两个选项来解决问题:
public class SimpleObject {
public string Name { get; set; }
}
"My parameter string"
您需要一个可以解析json数据的主体。
[FromBody] string Name
无法使用以下json
{
"Name": "Foo"
}
它需要一堂课
public class MyClass
{
public string Name;
}
然后传递给它
([FromBody] MyClass obj)
或者,如果它是单个值,请使用JSON之类的
{
[
"Foo",
"Foo1"
]
}
然后传递给它
([FromBody] List<string> obj)