Как сериализовать перечисление как строку глобально (не по атрибуту в каждом перечислении)? - PullRequest
1 голос
/ 06 ноября 2019

Я работаю над веб-API ASP.NET Core 3.0. Многие конечные точки возвращают json с перечислениями. Перечисления не сериализуются как строка, а как целое число по умолчанию.

Мне известен атрибут [JsonConverter(typeof(StringEnumConverter))]. Но я ищу решение, в котором я бы сказал: «Каждое перечисление, возвращаемое этим API, должно быть сериализовано в string, без необходимости вручную объявлять атрибуты в моей модели в каждом перечислении».

До сегодняшнего дня я работал с .NETCore2.1. Я смог добиться этого с помощью Newtonsoft.Json.Converters и этого промежуточного программного обеспечения:

        services.AddMvc()
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
            .AddJsonOptions(op => { op.SerializerSettings.Converters.Add(new StringEnumConverter());});

Этот код не работает в .NETCore3.0, поэтому я ищу решение, которое глобально преобразует enum в строку,всегда, не меняя и не декорируя мои модельные классы в NETCore3.0.

Спасибо за помощь

1 Ответ

1 голос
/ 06 ноября 2019

В .NET Core 3.0 пакет Newtonsoft.JSON больше не включается по умолчанию.

Установите следующий пакет и попробуйте добавить конвертер следующим образом:

services.AddMvc(...).AddNewtonsoftJson(opt => SerializerSettings.Converters.Add(new StringEnumConverter()));
...