我试图将GeoJSON反序列化为相应的POJO。每个GeoJSON类型都有一个Java对象(Point,LineString,Polygon等等)。我想让杰克逊使用GeoJSON实体的类型字段来使用相应的Java类。例如可以说我有以下GeoJSON的实体:用Jackson解析器反序列化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应该使用LineString对象和第三个多边形对象。
我知道你可以在Jackson中编写自定义的反序列化器,但我只看到了单个对象字段的那些。在我的情况下,我认为我必须为整个GeoJSON实体编写一个反序列化器,因为取决于类型字段,整个表示会发生变化。
也许有人可以给我一个暗示,在这种情况下做什么?也许有一些我没有读到的巧妙技巧?
谢谢。
一个例子:http://stackoverflow.com/questions/10329706/json-deserialization-into-another-class-hierarchy-using-jackson/10336625#10336625 – 2012-04-27 02:06:41
坦克很多!那正是我正在寻找的东西......你真的帮助我在这里。 – evermean 2012-04-27 11:45:18