Десериализация JSON в базовый класс .net с помощью JSON.net - PullRequest
2 голосов
/ 23 июня 2011

Я пытаюсь десериализовать GeoJSON с использованием библиотеки JSON.net . Компонент геометрии каждого объекта может быть разных типов на основе значения атрибута «type».

Мне нужно десериализовать геометрический компонент этого GeoJSON в геометрическую объектную модель следующим образом:

public abstract class Geometry { ... }

public class Point : Geometry { ... }

public class LineString : Geometry { ... }

public class Polygon : Geometry { ... }

Таким образом, основываясь на значении атрибута "type", он десериализуется в соответствующий конкретный тип .net, но доступ к нему осуществляется через его базовый класс Geometry.

Предоставляет ли библиотека JSON.net что-то похожее на KnownTypeAttribute в WCF или XmlElementAttribute в XML-сериализации, что позволяет мне десериализовать JSON в базовый класс с набором известных производных классы?

1 Ответ

4 голосов
/ 23 июня 2011

Документация здесь показывает этот пример:

    [JsonObject(MemberSerialization.OptIn)]
    public class Person
    {
      // "John Smith"
      [JsonProperty]
      public string Name { get; set; }

      // "2000-12-15T22:11:03"
      [JsonProperty]
      [JsonConverter(typeof(IsoDateTimeConverter))]
      public DateTime BirthDate { get; set; }

      // new Date(976918263055)
      [JsonProperty]
      [JsonConverter(typeof(JavaScriptDateTimeConverter))]
      public DateTime LastModified { get; set; }

      // not serialized
      public string Department { get; set; }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...