【问题标题】:Deserialize GeoJSON with Jackson Parser使用 Jackson Parser 反序列化 GeoJSON
【发布时间】:2012-04-26 18:56:58
【问题描述】:

我正在尝试将 GeoJSON 反序列化为相应的 POJO。对于每个 GeoJSON 类型(点、线串、多边形等),我都有一个 Java 对象。我想让杰克逊使用 GeoJSON 实体的类型字段来使用相应的 Java 类。例如,假设我有以下 GeoJSON 实体:

{ "type": "Point", "coordinates": [100.0, 0.0] }

{ "type": "LineString", "coordinates": [ [100.0, 0.0], [101.0, 1.0] ] }

{ 
"type": "Polygon", "coordinates": [
    [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ],
    [ [100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2] ]
  ]
}

对于第一个对象,Jackson 应该使用点类并相应地反序列化坐标字段。对于第二个对象,Jackson 应该使用 LineString 对象,对于第三个对象,应该使用多边形对象。

我知道您可以在 Jackson 中编写自定义反序列化器,但我只看到用于单个对象字段的反序列化器。就我而言,我认为我必须为整个 GeoJSON 实体编写一个反序列化器,因为根据类型字段,整个表示会发生变化。

也许有人可以提示我在这种情况下该怎么做?也许有一些我没读过的聪明把戏?

谢谢。

【问题讨论】:

    标签: serialization jackson pojo geojson


    【解决方案1】:

    为什么需要自定义处理程序?您确实需要使用@JsonTypeInfo 注释(属性“类型”;方法“As.NAME”)来获得自动多态类型处理;并且子类必须定义名称以与@JsonTypeName 一起使用。但除此之外,它似乎是可行的。 “坐标”属性的结构似乎有所不同,因此您需要为单独的子类建模。

    【讨论】:

    猜你喜欢
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 2015-05-20
    相关资源
    最近更新 更多