如何将ASP.NET Core配置为不向我的JSON响应追加/添加任何数据?目前在services.AddMvc();
中配置了ConfigureServices
,但除此之外没有添加自定义格式化程序。
如果我使用Ok()
(或BadRequest
,NotFound
,Unauthorized
等其他帮助方法之一)从我的控制器方法返回,我会得到以下回复
代码:
[HttpGet("foo")]
public IActionResult Foo()
{
return Ok(Json(new { Hello = "Hi", OneMoreField = 1234}));
}
的响应
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
}
我缺少什么,是调试标志还是我没有正确切换的东西?
答案 0 :(得分:3)
您什么都不丢失,但是您肯定会做额外的工作。 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});
}
答案 1 :(得分:1)
您可以简单地使用Controller
类方法Json(object data)
。
public IActionResult Foo() {
return Json(new { Hello = "Hi", OneMoreField = 1234});
}
答案 2 :(得分:-1)
试试这个,在Content-Type之后添加dataType属性并将其设置为json:
dataType: "json",