c# - OK 响应助手返回额外的 json 数据来响应

标签 c# json asp.net-core

如何将 ASP.NET Core 配置为不向我的 JSON 响应附加/添加任何数据?目前它在 ConfigureServices 中配置了 services.AddMvc(); 但除此之外没有添加自定义格式化程序。

如果我使用 Ok()(或其他帮助方法之一,如 BadRequestNotFound未经授权..) 我收到以下回复。

代码:

[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/

相关文章:

asp.net-core - 如何制作 .NET Core 类库并从 .NET 4.6 项目中引用它?

c# - 在 ASP.NET CORE 中流代理实时流

asp.net-web-api - 如何在 asp .net core 中处理具有相同路由和不同授权属性的不同操作

C# 无法通过 Nhibernate 执行 mysql 存储过程

c# - 将新项目动态添加到 IQueryable 硬编码假存储库

c# - 根据值从字典中选择随机条目

python - 如何动态获取json路径并用路径修改json字段值

c# - ASP.NET Core 3 MVC 路由参数不起作用

java - 从列表创建 JsonArray

json - 使用 NoSQL 数据库对 JSON 数据进行高效且可扩展的存储