4
可能重複:
JSON serialization of c# enum as string在JSON序列化枚舉值(C#)
我有兩個類,如下所示:
Transaction
int OrderNumber
// ... snip ...
IEnumerable<Item> Items
Item
string Sku
// ... snip ...
ItemCategory Category
ItemCategory是一個枚舉,看起來像這個:
[DataContract]
public enum ItemCategory
{
[EnumMember(Value = "Category1")]
Category1,
[EnumMember(Value = "Category2")]
Category2
}
我的兩個類都根據需要用DataContract和DataMember屬性裝飾。
我正在嘗試獲取事務項目的JSON表示。中的事務,我有一個看起來像這樣的公共方法:
public string GetJsonRepresentation()
{
string jsonRepresentation = string.Empty;
DataContractJsonSerializer serializer = new DataContractJsonSerializer(this.GetType());
using (MemoryStream memoryStream = new MemoryStream())
{
serializer.WriteObject(memoryStream, this);
jsonRepresentation = Encoding.Default.GetString(memoryStream.ToArray());
}
return jsonRepresentation;
}
此函數返回一個字符串,它看起來像這樣:
{
"OrderNumber":123,
"Items":[{"SKU": "SKU1","Category": 0}]
}
這就是我想要的,只是一個事實,即「類別「每個項目的枚舉值被序列化爲整數值,而不是我在EnumMember屬性中指定的值。我怎樣才能得到它,所以返回的JSON看起來像「Category」:「Category1」而不是「Category」:0?
錯誤,請使用StringEnumConverter。如果您只希望它是單個實例中的字符串,或者在您的序列化程序設置中包含轉換器以將枚舉全局轉換爲字符串,反之亦然,請使用裝飾器指定它 – wallacer
@wallacer @DeveloperX實際上是正確的。 'StringEnumConverter'是一個Json.Net屬性,不能用於基礎.Net –
@LukeMarlin啊,好的。謝謝澄清! – wallacer