C# - 使用DataContractJsonSerializer将JSON字符串反序列化为Enum []

时间:2013-06-05 06:44:19

标签: c# json serialization datacontractserializer

我有这个JSON字符串

[ \"postal_code\" ]

我的枚举定义:

[DataContract]
public enum MyEnum
{
    [EnumMember(Value = "postal_code")]
    PostalCode,
}

这是我到目前为止所做的:

byte[] byteArray = Encoding.ASCII.GetBytes(jsonString);
MemoryStream outputStream = new MemoryStream(byteArray);
DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(typeof(MyEnum[]));
MyEnum[] myEnum = (MyEnum[]) dataContractJsonSerializer.ReadObject(outputStream);
outputStream.Close();
//return myEnum ;

到达ReadObject行时出错

System.FormatException: Input string was not in the correct format: nDigits == 0.

如何正确地将JSON字符串反序列化为MyEnum?

我也想避免使用JSON.Net。我想要使​​用DataContractJsonSerializer。

1 个答案:

答案 0 :(得分:0)

您可以阅读here

  

枚举成员值被视为JSON中的数字,这与数据合同中处理它们的方式不同,它们作为成员名称包含在内

另外

  

所有枚举成员都是可序列化的。 EnumMemberAttribute和   如果使用,则忽略NonSerializedAttribute属性。

因此,尝试使用另一个反序列化器来实现此目的。也许JSON.net  或按照建议的here扩展JsonSerializer。