Сериализовать контейнер перечислений в виде строк с помощью JSON.net

Вы можете сериализовать поле enums в модели WebAPI в виде строки, добавив атрибут:

enum Size { Small, Medium, Large } class Example1 { [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] Size Size { get; set; } } 

Это приведет к сериализации этого JSON:

 { "Size": "Medium" } 

Как я могу сделать то же самое для коллекций перечислений?

 class Example2 { IList Sizes { get; set; } } 

Я хочу сериализовать этот JSON:

 { "Sizes": [ "Medium", "Large" ] } 

Вам нужно использовать свойство JsonPropertyAttribute.ItemConverterType :

 class Example2 { [JsonProperty (ItemConverterType = typeof(StringEnumConverter))] public IList Sizes { get; set; } } 

У меня есть это в кодах запуска моего веб-приложения для сериализации всех перечислений в строки (я предпочитаю передавать имена перечислений в значения, делает вещи более надежными).

Должен признаться, я никогда не пробовал его в списке перечислений, хотя я не знаю, что с ним делать – может быть стоит попробовать.

 var jsonFormatter = config.Formatters.JsonFormatter; jsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter { CamelCaseText = true }); 
  • Как пропустить / игнорировать / пропускать пустые литералы объектов в выпуске JSON?
  • Deserializing JSON, когда иногда массивы, а иногда и объекты
  • Разбор JSON с использованием Json.net
  • Ошибка JSON.NET Локальный цикл привязки для типа
  • Разбор большого json-файла в .NET.
  • Удаление десериализации JSON в .NET-объект с использованием Newtonsoft (или LINQ to JSON, возможно?)
  • Сериализация / десериализация пользовательской коллекции с дополнительными свойствами с помощью Json.Net
  • Как я могу вернуть CamelCase JSON, сериализованный JSON.NET из методов controllerа ASP.NET MVC?
  • Каков правильный способ использования JSON.NET для анализа streamа объектов JSON?
  • Deserialize json с известными и неизвестными полями
  • Обеспечение json-ключей в .NET
  • Interesting Posts

    Атрибут .NET DefaultValue

    jQuery получить значение выбранного переключателя

    При открытии новой вкладки / окна установите по умолчанию параметр «pro».

    Присоедините третий компьютер к общему интернет-соединению

    Максимальная длина для ввода / вывода MD5

    Как отключить современный интерфейс и вернуть прежнее меню «Пуск» в Windows 8?

    Entity Framework: уже существует открытый DataReader, связанный с этой командой

    Jquery Ajax Загрузка изображения

    Как добавить параметры в HttpURLConnection с помощью POST с помощью NameValuePair

    AngularJS – создать директиву, которая использует ng-model

    WPF Изменение фонового изображения кнопки при нажатии

    Как включить навигацию по клавиатуре в результатах поиска Google

    Может ли 64-разрядное программное обеспечение работать на 32-битной ОС?

    Возьмите psd и экспортируйте все слои в отдельные файлы изображений без использования Photoshop

    Не удалось выполнить пинг удаленного сервера

    Давайте будем гением компьютера.