【发布时间】:2018-04-03 23:03:55
【问题描述】:
一个包含枚举属性并使用 JavaScriptSerializer 序列化对象的类。 当我序列化 JSON 时,我得到的是索引值而不是文本。 举个例子:
public enum LocationType
{
[Description("Description 1") ,EnumMember(Value = "EST")]
EST = 1,
[Description("Description 2"), EnumMember(Value = "INTNS")]
INTNS = 2,
[Description("Description 3"), EnumMember(Value = "INTS")]
INTS = 3
}
public class Details
{
public LocationType? LocationType { get; set; }
}
List<Details> obj = new List<Details>();
obj.Add(new Details() { LocationType = LocationType.INTNS });
obj.Add(new Details() { LocationType = LocationType.INTS });
obj.Add(new Details() { LocationType = LocationType.EST });
obj.Add(new Details() { LocationType = LocationType.INTS });
obj.Add(new Details() { LocationType = LocationType.EST });
obj.Add(new Details() { LocationType = LocationType.EST });
obj.Add(new Details() { LocationType = LocationType.INTS });
obj.Add(new Details() { LocationType = LocationType.EST });
return obj;
实际json结果:
{ "LocationType ": 2 }
预期的 json 结果:
{ "LocationType ": "INTNS" }
【问题讨论】:
-
我不能将 LocationType.INTNS.Value 用于枚举。使用 LocationType.INTNS 时会返回 INTNS
-
使用 Json.Net 会好很多。这些天,甚至 MS 自己也停止使用 JavaScriptSerialzer,而不是 Json.Net
-
当我使用 newtonsoft 时,它可以正常工作,但我需要在 javascriptserializer 中实现这种情况
标签: c# asp.net asp.net-mvc serialization javascriptserializer