【问题标题】:Custom JSON serilization on the Ok() function .NET WebAPIOk() 函数 .NET Web API 上的自定义 JSON 序列化
【发布时间】:2017-06-27 08:31:10
【问题描述】:

我有一个 C# .NET WebAPI 项目,我所有的 API 都采用以下形式:

[HttpGet]
public IHttpActionResult Get()
{
   var myComplexObject = BuildResponse();

   return Ok(myComplexObject);
}

Ok() 函数目前负责将响应对象序列化为 JSON 字符串。如何告诉框架使用自定义 JSON 序列化程序而不是默认序列化程序?

【问题讨论】:

  • 只针对这个请求还是针对所有请求?
  • 为什么不使用return Json(myComplexObject),因为这也会返回状态 200 / OK?
  • @CodeCaster 为他们所有人
  • @hakany 我想定义我的自定义 JSON 序列化器

标签: c# json string http asp.net-web-api


【解决方案1】:

如果您想对所有请求使用自定义序列化程序,请在 WebApiConfig.cs 中配置 HttpConfiguration

// Add custom formatter - add at the top so it fires first!
// This leaves the old one in place so JsonValue/JsonObject/JsonArray still are handled
config.Formatters.Insert(0, new CustomJsonNetFormatter());

这是一篇关于如何制作自己的 serailizer 的文章

Using an alternate JSON Serializer in ASP.NET Web API

【讨论】:

    【解决方案2】:

    调用OK()方法返回的实例,可以新建OkNegotiatedContentResult。从那里你把你的 JsonSerializerSettings.

    实际上,当您调用 OK(T content) 方法时,它会帮助您创建新的 OkNegotiatedContentResult 对象。它会将您的响应对象包装在那里。所以直接可以。 希望对您有所帮助。

    【讨论】:

    • 但是你实际上绕过了内容协商,并且硬编码 JSON 支持。
    猜你喜欢
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 2012-10-22
    相关资源
    最近更新 更多