我正在尝试将 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 实体编写一个反序列化器,因为根据类型字段,整个表示会发生变化。
也许有人可以提示我在这种情况下该怎么做?也许有一些我没有读过的聪明把戏?
谢谢。