VS XML

2012-05-19 66 views
19

我有以下枚舉在我的項目VS XML

public enum CameraAccessMethod 
{ 
    Manual = 0, 
    Panasonic = 1, 
    Axis = 2, 
    AirCam = 3 
} 

我有一個對象,它是序列化要麼JSON或根據不同的場景和對象屬性的一個XML是CameraAccessMethod類型的枚舉序列化JSON。我遇到的問題是,當這個屬性被序列化爲XML時,它將給出枚舉值的字符串表示(手動,松下,軸,Aircam),但是在JSON中,它被序列化爲數字值(0,1,2,3)。我如何避免這種不一致?我也想在JSON序列化中使用字符串。

+1

你是如何做JSON序列化的?根據你使用的序列化器,它可能有也可能沒有將枚舉值序列化爲字符串的選項。 – carlosfigueira

+0

我使用默認的序列化程序隨附的asp.net web api beta –

+0

[JSON序列化的c#枚舉作爲字符串]的可能重複(http://stackoverflow.com/questions/2441290/json-serialization-of-c-sharp -enum-as-string) – HackedByChinese

回答

36

由於網頁API RC您可以在Application_Start()通過施加StringEnumConvert現有JsonMediaTypeFormatter轉換器採集獲得枚舉的字符串表示:

var jsonFormatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter; 
var enumConverter = new Newtonsoft.Json.Converters.StringEnumConverter(); 
jsonFormatter.SerializerSettings.Converters.Add(enumConverter); 
+0

需要一個';'在第1行末尾 –

+0

現在修復了,謝謝 –

0

要使用JsonMediaTypeFormatterenumConverter我們都可以用下面的代碼。 // code start here

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 
});