使用JSON.net将JSON反序列化为.net基类

时间:2011-06-23 05:06:21

标签: json serialization polymorphism json.net

我正在尝试使用GeoJSON库反序列化JSON.net。每个特征的几何组件可以是基于"类型"的许多不同类型。属性值。

我需要将此GeoJSON的几何组件反序列化为几何对象模型,如下所示:

public abstract class Geometry { ... }

public class Point : Geometry { ... }

public class LineString : Geometry { ... }

public class Polygon : Geometry { ... }

因此基于"类型"的值属性,它将反序列化为相应的.net具体类型,但通过其基础Geometry类访问。

JSON.net库是否提供类似于WCF中的KnownTypeAttribute或XML序列化中的XmlElementAttribute,它允许我将JSON反序列化为具有一组已知派生类的基类?

1 个答案:

答案 0 :(得分:4)

文档here显示了此示例:

    [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; }
    }