Я пытаюсь десериализовать GeoJSON в соответствующие POJO. У меня есть объект Java для каждого типа GeoJSON (Point, LineString, Polygon и т.д.). Я хотел бы, чтобы Джексон использовал поле типа объекта 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] ]
]
}
Для первого объекта Джексон должен использовать класс точек и соответствующим образом десериализовать поле координат. Для второго объекта Джексон должен использовать объект LineString, а для третьего — полигональный объект.
Я знаю, что вы можете написать собственные десериализаторы в Джексоне, но я видел их только для отдельных полей объектов. В моем случае я думаю, что мне нужно написать десериализатор для всего объекта GeoJSON, потому что в зависимости от поля типа меняется все представление.
Может кто подскажет, что делать в этом случае? Может, есть какой-то хитрый трюк, о котором я не читал?
Спасибо.