serialization .net enums как строки в json с JavascriptSerializer
] стандартный .net javascriptserializer
часто выводит перечисления в качестве их целочисленных значений в JSON. Чтобы сериализовать их как строки, представляющие их имена, существует несколько методов.
Метод 1: Использование json.net's stringenumConverter
самый простой и рекомендуемый подход использует мощный stringenumConverter
. Этот преобразователь может быть применен либо на уровне определения перечисления, либо на уровне свойств:
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
[JsonConverter(typeof(StringEnumConverter))]
public enum Gender { Male, Female }
public class Person
{
public int Age { get; set; }
[JsonConverter(typeof(StringEnumConverter))] // Or apply at property level
public Gender Gender { get; set; }
}
это обеспечивает свойство gender
сериализуется как строка («мужчина» или «женщина») в полученном JSON.
Метод 2: Глобальные параметры конфигурации
для более широкого применения настройка stringenumConverter
глобально:
на уровне перечисления: применить преобразователь к самому определению перечисления для последовательной сериализации строки во всех целях использования этого перечисления:
[JsonConverter(typeof(StringEnumConverter))]
public enum Gender { Male, Female }
]
с jsonserializer
: добавить преобразователь в конкретный jsonserializer
экземпляр, чтобы повлиять только на то, что он сериализован по этому поводу:
var serializer = new JsonSerializer();
serializer.Converters.Add(new StringEnumConverter());
// ... use serializer to serialize your objects ...
]
с jsonConvert
: применить преобразователь напрямую во время сериализации:
string json = JsonConvert.SerializeObject(myObject, new StringEnumConverter());
]
настройка stringenumConverter
stringenumConverter
конструктор предлагает дополнительную настройку, позволяющую контролировать соглашения именования и обработку номеров. Обратитесь к документации JSON.NET для подробных параметров.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3