gpt4 book ai didi

c# - 网络 API : Configure JSON serializer settings on action or controller level

转载 作者:IT王子 更新时间:2023-10-29 04:16:17 26 4
gpt4 key购买 nike

许多 SO 线程都介绍了在应用程序级别覆盖 Web API 的默认 JSON 序列化程序设置。但是我怎样才能在操作级别配置它的设置呢?例如,我可能想在我的一个操作中使用驼峰式属性进行序列化,而不是在其他操作中。

最佳答案

选项 1(最快)

在操作级别,您可以在使用 Json 方法时始终使用自定义 JsonSerializerSettings 实例:

public class MyController : ApiController
{
public IHttpActionResult Get()
{
var settings = new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
var model = new MyModel();
return Json(model, settings);
}
}

选项 2( Controller 级别)

您可以创建一个新的 IControllerConfiguration 属性来自定义 JsonFormatter:

public class CustomJsonAttribute : Attribute, IControllerConfiguration 
{
public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
{
var formatter = controllerSettings.Formatters.JsonFormatter;

controllerSettings.Formatters.Remove(formatter);

formatter = new JsonMediaTypeFormatter
{
SerializerSettings =
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
}
};

controllerSettings.Formatters.Insert(0, formatter);
}
}

[CustomJson]
public class MyController : ApiController
{
public IHttpActionResult Get()
{
var model = new MyModel();
return Ok(model);
}
}

关于c# - 网络 API : Configure JSON serializer settings on action or controller level,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44499041/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com