[英]Enum Serialization Json vs XML
我的項目中有以下枚舉
public enum CameraAccessMethod
{
Manual = 0,
Panasonic = 1,
Axis = 2,
AirCam = 3
}
我有一個對象,它根據不同的場景被序列化為 json 或 XML,並且對象的屬性之一是CameraAccessMethod
類型。 我遇到的問題是,當此屬性被序列化為 XML 時,它將給出枚舉值(手動、松下、Axis、Aircam)的字符串表示,但在 JSON 中它被序列化為數值(0、1、2、3)。 我怎樣才能避免這種不一致? 我也想要 JSON 序列化中的字符串。
由於 Web API RC,您可以通過在Application_Start()
期間將StringEnumConvert
應用於現有的JsonMediaTypeFormatter
轉換器集合來獲取枚舉的字符串表示形式:
var jsonFormatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
var enumConverter = new Newtonsoft.Json.Converters.StringEnumConverter();
jsonFormatter.SerializerSettings.Converters.Add(enumConverter);
如果您切換到使用基於 Json.NET 的格式化程序(它將與下一個 ASP.NET Web API 一起提供開箱即用),您可以輕松完成此操作。 有關詳細信息,請參閱此 SO 帖子:
要同時使用JsonMediaTypeFormatter
和enumConverter
,我們可以使用下面的代碼。 //代碼從這里開始
var serializerSettings = GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings;
var enumConverter = new Newtonsoft.Json.Converters.StringEnumConverter();
serializerSettings.Converters.Add(enumConverter);
GlobalConfiguration.Configuration.Formatters.Clear();
GlobalConfiguration.Configuration.Formatters.Add(new PartialJsonMediaTypeFormatter()
{
IgnoreCase = true,
SerializerSettings = serializerSettings
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.