【发布时间】:2011-12-18 20:51:47
【问题描述】:
我有两个类如下:
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 属性进行装饰。
我正在尝试获取 Transaction 项的 JSON 表示。在 Transaction 中,我有一个如下所示的公共方法:
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}]
}
这就是我想要的,除了每个 Item 的“Category”枚举值被序列化为其整数值,而不是我在 EnumMember 属性中指定的值。我怎样才能让返回的 JSON 看起来像 "Category": "Category1" 而不是 "Category": 0?
【问题讨论】:
标签: c# json serialization