Gif*_*fen 6 c# json asp.net-core
如何配置 ASP.NET Core 不向我的 JSON 响应追加/添加任何数据?目前它配置services.AddMvc();为ConfigureServices配置的,但除此之外没有添加任何自定义格式化程序。
如果我使用Ok()(或其他帮助方法之一,如BadRequest、NotFound、Unauthorized)从控制器方法返回,我会得到以下响应。
代码:
[HttpGet("foo")]
public IActionResult Foo()
{
return Ok(Json(new { Hello = "Hi", OneMoreField = 1234}));
}
Run Code Online (Sandbox Code Playgroud)
点击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
}
}
Run Code Online (Sandbox Code Playgroud)
如果我删除Ok(...)调用并返回,Json(new { Hello = "Hi", OneMoreField = 1234})我会得到我所期望的,一个像这样的对象
"value": {
"hello": "Hi",
"oneMoreField": 1234
}
Run Code Online (Sandbox Code Playgroud)
我缺少什么,是调试标志还是我没有正确切换的东西?
你并没有错过任何东西,但你肯定做了额外的工作。辅助Json函数与 using 相同Ok,但强制响应采用 JSON 格式。当你这样做时,Ok(Json(data))你正在序列化JsonResult而不是data.
因此,使用:
[HttpGet("foo")]
public IActionResult Foo()
{
return Json(new { Hello = "Hi", OneMoreField = 1234});
}
Run Code Online (Sandbox Code Playgroud)
或者:
[HttpGet("foo")]
public IActionResult Foo()
{
return Ok(new { Hello = "Hi", OneMoreField = 1234});
}
Run Code Online (Sandbox Code Playgroud)
小智 -1
试试这个,在 Content-Type 之后添加 dataType 属性并将其设置为 json:
dataType: "json",
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1390 次 |
| 最近记录: |