GeoJSONを対応するPOJOに逆シリアル化しようとしています。私はそれぞれのGeoJSONタイプ(ポイント、ラインストリング、ポリゴンなど)に対してJavaオブジェクトを持っています。私はJacksonが対応するJavaクラスを使用するためにGeoJSONエンティティのタイプフィールドを使用するようにしたいと思います。GeoJSONをJackson Parserで逆シリアル化する
{ "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] ]
]
}
ジャクソンがポイントクラスを使用する必要がありますし、それに応じて座標フィールドをデシリアライズする必要があり最初のオブジェクトの場合:たとえば、私は次のようにGeoJSONエンティティを持って言うことができます。 2番目のオブジェクトでは、JacksonはLineStringオブジェクトを使用し、3番目のオブジェクトについてはポリゴンオブジェクトを使用します。
私はあなたがジャクソンでカスタムデシリアライザを書くことができると知っていますが、私は単一のオブジェクトフィールドのものしか見ていません。私のケースでは、タイプフィールドに応じて表現全体が変化するため、GeoJSONエンティティ全体のデシリアライザを作成する必要があると思います。
おそらく誰かが私にこのケースで何をすべきかのヒントを与えることができますか?おそらく私が読んだことのない巧妙なトリックがありますか?
ありがとうございました。
例:http://stackoverflow.com/questions/10329706/json-deserialization-into-another-class-hierarchy-using-jackson/10336625#10336625 –
タンクがたくさん!それはまさに私が探していたものでした...あなたは本当にここで私を助けました。 – evermean