У меня есть проект ASP MVC с использованием .netcore 3.1, где я переопределяю параметры сериализатора, как показано ниже:
services
.AddControllers()
.AddNewtonsoftJson(options =>
{
options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind;
options.SerializerSettings.NullValueHandling = NullValueHandling.Include;
options.SerializerSettings.Converters.Add(new StringEnumConverter
{
NamingStrategy = new CamelCaseNamingStrategy(),
});
})
Это прекрасно работает, когда MVC сериализует данные (запрос / ответ) ) для меня. Но теперь в одном из промежуточных программ мне нужно сериализовать вручную и вернуть некоторые данные в виде ответа, например:
public async Task Invoke(HttpContext context)
{
try
{
await _next(context);
}
catch (Exception exception)
{
... // removed for simplicity
await context.Response.WriteAsync(JsonConvert.SerializeObject(errorResponse, _jsonSerializerSettings));
}
}
Здесь я хочу повторно использовать существующие настройки для сериализации. Но старые MvcJsonOptions больше не доступны в .netcore 3.1 (исправьте, если я ошибаюсь). Так как же добиться этого, не дублируя настройки сериализации json?