如何将 ASP.NET Core 配置为不向我的 JSON 响应附加/添加任何数据?目前它在 ConfigureServices
中配置了 services.AddMvc();
但除此之外没有添加自定义格式化程序。
如果我使用 Ok()
(或其他帮助方法之一,如 BadRequest
、NotFound
、未经授权
..) 我收到以下回复。
代码:
[HttpGet("foo")]
public IActionResult Foo()
{
return Ok(Json(new { Hello = "Hi", OneMoreField = 1234}));
}
点击 http://localhost:port/foo 的响应
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Mon, 21 Aug 2017 12:14:11 GMT
Server: Kestrel
Transfer-Encoding: chunked
{
"contentType": null,
"serializerSettings": null,
"statusCode": null,
"value": {
"hello": "Hi",
"oneMoreField": 1234
}
}
如果我删除 Ok(...)
调用并返回 Json(new { Hello = "Hi", OneMoreField = 1234})
我明白了期待,像这样的对象
"value": {
"hello": "Hi",
"oneMoreField": 1234
}
我错过了什么,是调试标志还是我没有正确切换的东西?
最佳答案
你没有遗漏任何东西,但你肯定做了额外的工作。 Json
辅助函数与使用 Ok
相同,但强制响应采用 JSON 格式。当您执行 Ok(Json(data))
时,您正在序列化 JsonResult
而不是 data
。
因此,请使用:
[HttpGet("foo")]
public IActionResult Foo()
{
return Json(new { Hello = "Hi", OneMoreField = 1234});
}
或者:
[HttpGet("foo")]
public IActionResult Foo()
{
return Ok(new { Hello = "Hi", OneMoreField = 1234});
}
关于c# - OK 响应助手返回额外的 json 数据来响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45797159/