Сериализация enum в json в виде строки

189
13 августа 2021, 21:40

У меня есть класс со свойством типа enum property и при сериализации в json оно выводится как число, в то время как мне надо чтобы результат был в виде строки.

В качестве примера:

enum Gender { Male, Female }
class Person
{
    int Age { get; set; }
    Gender Gender { get; set; }
}

Желаемый вариант json:

{ "Age": 35, "Gender": "Male" }

Каким способом это можно сделать?

Свободный перевод вопроса JavaScriptSerializer - JSON serialization of enum as string от участника @Omer Bokhari.

Answer 1

Раз вы пользуетесь json.Net то можете просто использовать атрибут

class Person
{
    int Age { get; set; }
    [JsonConverter(typeof(StringEnumConverter))]
    Gender Gender { get; set; }
}

Также можно указать при настройке сериализатора:

JsonConvert.SerializeObject(MyObject, 
    new Newtonsoft.Json.Converters.StringEnumConverter());

или:

serializer.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter()); 

Документация: StringEnumConverter Class

Свободный перевод ответа JavaScriptSerializer - JSON serialization of enum as string от участника @Matt Dearing.

READ ALSO
Ninject, заменить реализацию на другой класс

Ninject, заменить реализацию на другой класс

Знакомлюсь с IoC контейнерами и NinjectПо примерам в сети сделал реализацию для Ninject

345
C# как изменить цвет фигуры

C# как изменить цвет фигуры

Есть форма с кодом:

132
Из за чего возникает ошибка Unrecognized token 'storeId': was expecting ('true', 'false' or 'null') при попытке отправить POST запрос через CURL?

Из за чего возникает ошибка Unrecognized token 'storeId': was expecting ('true', 'false' or 'null') при попытке отправить POST запрос через CURL?

Не пойму из за чего может возникать ошибка при попытке отправить POST запросПри попытке отправить POST запрос возникает такая ошибка: Array ( [state]...

132
Laravel посредники

Laravel посредники

Задача:

287