Serialization 使用Jackson解析器反序列化GeoJSON
我正在尝试将GeoJSON反序列化为相应的POJO。对于每种GeoJSON类型(点、线字符串、多边形等),我都有一个Java对象。我想让Jackson使用GeoJSON实体的type字段来使用相应的Java类。例如,假设我有以下GeoJSON实体:Serialization 使用Jackson解析器反序列化GeoJSON,serialization,jackson,pojo,geojson,Serialization,Jackson,Pojo,Geojson,我正在尝试将GeoJSON反序列化为相应的POJO。对于每种GeoJSON类型(点、线字符串、多边形等),我都有一个Java对象。我想让Jackson使用GeoJSON实体的type字段来使用相应的Java类。例如,假设我有以下GeoJSON实体: { "type": "Point", "coordinates": [100.0, 0.0] } { "type": "LineString", "coordinates": [ [100.0, 0.0], [101.0, 1.0] ] } {
{ "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应该使用point类并相应地反序列化坐标字段。对于第二个对象,Jackson应使用LineString对象,对于第三个对象,Jackson应使用polygon对象
我知道您可以在Jackson中编写自定义反序列化程序,但我只见过针对单个对象字段的反序列化程序。在我的例子中,我认为我必须为整个GeoJSON实体编写一个反序列化程序,因为根据类型字段,整个表示形式会发生变化
也许有人能给我一个提示,在这种情况下该怎么办?也许有什么聪明的把戏我没读过
谢谢 为什么需要自定义处理程序?您确实需要使用
@JsonTypeInfo
注释(属性“type”;方法“As.NAME”)来获得自动多态类型处理;子类必须定义要与@JsonTypeName
一起使用的名称。但除此之外,这似乎是可行的。
“coordinates”属性的结构似乎各不相同,所以您需要为单独的子类建模。这里的一个例子是:坦克很多!这正是我想要的…你真的帮了我。