Сериализуйте перечисление в JSON, используя значение атрибута EnumMember в ASP.NET.C#

Место общения программистов C#
Ответить
Anonymous
 Сериализуйте перечисление в JSON, используя значение атрибута EnumMember в ASP.NET.

Сообщение Anonymous »

У меня есть такое перечисление:
using System.ComponentModel;
using System.Runtime.Serialization;
using Newtonsoft.Json;
using My.Custom.Namespace.Converters;

[TypeConverter(typeof(CustomEnumConverter))]
[JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
public enum EFoo
{
[EnumMember(Value = "VALUE1")]
Value1Enum = 1,

[EnumMember(Value = "VALUE2")]
Value2Enum = 2
}

Значения этого перечисления используются в DTO, возвращаемых из контроллера AspNetCore MVC, следующим образом: return this.Ok(someDto).
Как должен выглядеть сериализованный JSON:
{
"foo": "VALUE1",
...
}

Как это выглядит на самом деле:
{
"foo": "Value1Enum",
...
}

Есть ли способ заставить ASP.NET использовать значение атрибута EnumMember при сериализации перечисления в фоновом режиме без внесения изменений в исходное определение перечисления?
РЕДАКТИРОВАНИЕ:
Добавлены использования в код перечисления.
Платформой является ASP.NET Core версии 6.0.
Я поискал в Startup.cs все, что связано с сериализацией json, и нашел это:
services.AddControllersWithViews()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter(JsonNamingPolicy.CamelCase));
});


Подробнее здесь: https://stackoverflow.com/questions/785 ... in-asp-net
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»