1

GeoJSON 文字列を含む JSON 文字列を逆シリアル化しようとしていました。

point: {
    type: "Point",
    coordinates: [
        7.779259,
        52.21864
    ]
}

作成したいオブジェクトのタイプは

com.vividsolutions.jts.geom.Point

このクラスを使用するのは、空間データに PostGis データベースを使用するためです。残念ながら、このクラスには、必要な引数以外のコンストラクターがありません。しかし、どういうわけか、引数以外のコンストラクターを持たないCoordinateSequence CoordinateSequenceも実装しています。着信json文字列を逆シリアル化しようとすると、エラーが発生します

java.lang.RuntimeException: Unable to invoke no-args constructor for 
interface com.vividsolutions.jts.geom.CoordinateSequence. 
Register an InstanceCreator with Gson for this type may fix this problem.

ここの例に従って、CoordinateSequence のインターフェイスの InstanceCreator を作成しようとしましたが、成功しませんでした。また、問題は CoordinateSequence の使用されているインターフェイスにあるため、Point をサブクラス化しても答えは得られませんでした。

解決策につながる助けやヒントをいただければ幸いです。

4

3 に答える 3

0

サーバー側で行う:

SELECT ST_GeomFromGeoJSON('{"type":"Point","coordinates":[7.779259,52.21864]}');

注: 質問で提供されている例は、 The GeoJSON Format Specificationとは若干異なります。

于 2013-02-19T18:54:20.960 に答える
0

クラスは、変更できないライブラリからのものだと思います。シリアル化プロセスを支援するためだけに、クラスをサブクラス化し、サブクラスに引数なしのコンストラクターを配置しようとしましたか? 私は以前にそれを行い、ある程度の成功を収めました。

// .... content I cant change.
public class LibraryPOJOClass {
  public LibraryPOJOClass(final int id) { 
    // ...
  }
}

public class MyLibraryPojoClass extends LibraryPOJOClass {
  MyLibraryPojoClass() {
    super(0); // I will change this later, with reflection if need be. 
  }
}
于 2013-02-19T16:39:10.947 に答える