【发布时间】:2021-08-19 10:18:07
【问题描述】:
我必须将项目转换为 .NET Core。在源项目中有 2 个控制器,每个控制器都有 1 个端点(方法)。两种方法都返回一个 Customer 对象列表,这些对象以 JSON 格式反序列化返回给调用者。 其中一个控制器有一个特殊的属性:
[SerializationConfiguration(typeof(CustomerSerializationSettings))]
SerializationConfiguration 如下所示,因此在将 Json 结果发送给调用者之前,Json 会通过 HttpControllerSettings 中设置的格式化程序进行更改:
public SerializationConfigurationAttribute(Type jsonSerializerType)
{
JsonSerializerSettings = (ISerializationSettings)Activator.CreateInstance(jsonSerializerType);
}
public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
{
controllerSettings.Formatters.Remove(controllerSettings.Formatters.JsonFormatter);
var formatter = JsonSerializerSettings.SerializerSettings.ToFormatter();
controllerSettings.Formatters.Insert(0, formatter);
}
CustomerSerializationSettings 如下所示:
public class CustomerSerializationSettings : ISerializationSettings
{
public CustomerSerializationSettings()
{
SerializerSettings = new JsonSerializerSettings
{
PreserveReferencesHandling = PreserveReferencesHandling.Objects,
ContractResolver = new EntityContractResolver()
.AddProperties<CustomerModel>(m => m.XXX)
};
DeserializerSettings = new JsonSerializerSettings();
}
public JsonSerializerSettings SerializerSettings { get; private set; }
public JsonSerializerSettings DeserializerSettings { get; private set; }
}
我应该如何在 .NET Core 中实现它? ...我的意思是SerializationConfiguration中的Initialize部分(在.net核心中:属性类中的OnActionExecuting)
【问题讨论】:
标签: json .net-core serialization controller json.net