解析JSON.net中的枚举
我正在使用JSON.net(也许v3.5ish?它来自2010年10月)。 我试图将一些json反序列化为枚举:
geometryType:“esriGeometryPolygon”
我有这个枚举:
/// /// The geometry type. /// [DataContract] public enum GeometryType { /// /// Refers to geometry type Envelope /// [EnumMember(Value = "esriGeometryEnvelope")] Envelope, /// /// Refers to geometry type MultiPoint /// [EnumMember(Value = "esriGeometryMultipoint")] MultiPoint, /// /// Refers to geometry type MapPoint /// [EnumMember(Value = "esriGeometryPoint")] Point, /// /// Refers to geometry type Polygon /// [EnumMember(Value = "esriGeometryPolygon")] Polygon, /// /// Refers to geometry type Polyline /// [EnumMember(Value = "esriGeometryPolyline")] Polyline }
但它抛出一个错误,说“错误转换值”esriGeometryPolygon“键入’… GeometryType’。
我在这里失踪了什么?
是因为它是旧版本(我使用的是monotouch端口: https : //github.com/chrisntr/Newtonsoft.Json ,一年内没有更新)? 或者我的datacontract错了吗?
编辑:我将最新的JSON.NET移植到MT,我仍然得到完全相同的错误。
根据JSON.NET文档,默认行为是对Enums使用int值: http : //james.newtonking.com/projects/json/help/SerializationGuide.html
您可以通过在枚举上添加带有StringEnumConverter的JsonConverter属性来更改它…
/// /// The geometry type. /// [DataContract] [JsonConverter(typeof(StringEnumConverter))] public enum GeometryType
文档: 使用JsonConverters进行序列化