解析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进行序列化