Подтвердить что ты не робот

Синтаксический анализ перечисления в JSON.net

Я использую JSON.net(возможно, v3.5ish? it from октябрь 2010). и я пытаюсь десериализовать некоторый json в перечисление:

geometryType: "esriGeometryPolygon"

У меня есть это перечисление:

/// <summary>
/// The geometry type.
/// </summary>
[DataContract]
public enum GeometryType
{
    /// <summary>
    /// Refers to geometry type Envelope
    /// </summary>
    [EnumMember(Value = "esriGeometryEnvelope")]
    Envelope,
    /// <summary>
    /// Refers to geometry type MultiPoint
    /// </summary>
    [EnumMember(Value = "esriGeometryMultipoint")]
    MultiPoint,
    /// <summary>
    /// Refers to geometry type MapPoint
    /// </summary>
    [EnumMember(Value = "esriGeometryPoint")]
    Point,
    /// <summary>
    /// Refers to geometry type Polygon
    /// </summary>
    [EnumMember(Value = "esriGeometryPolygon")]
    Polygon,
    /// <summary>
    /// Refers to geometry type Polyline
    /// </summary>
    [EnumMember(Value = "esriGeometryPolyline")]
    Polyline
}

но он выдает сообщение об ошибке "Ошибка преобразования значения" esriGeometryPolygon "для ввода"... GeometryType ".

что мне здесь не хватает?

это потому, что это старая версия (я использую порт monotouch: https://github.com/chrisntr/Newtonsoft.Json, который не обновлялся в течение года)? или я получил свой datacontract неправильно?


EDIT: я поместил последнюю версию JSON.NET в MT и все еще получаю ту же самую ошибку.

4b9b3361

Ответ 1

Согласно документации JSON.NET, поведение по умолчанию заключается в использовании значения int для Enums: http://james.newtonking.com/projects/json/help/SerializationGuide.html

Вы можете изменить это, добавив атрибут JsonConverter с помощью StringEnumConverter на вашем перечислении...

/// <summary>
/// The geometry type.
/// </summary>
[DataContract]
[JsonConverter(typeof(StringEnumConverter))]
public enum GeometryType

Документация: Сериализация с помощью JsonConverters