0

これらの単純化されたインターフェースを実装する拡張サーバー側 Java オブジェクトがあります。

interface Vector {
  public double getX();
  public double getY();
}

interface Geometry {
  public List<Vector> getShell();//can get big
  public List<List<Vector>> getHoles();
}

interface Feature {
  public String getID();
  public List<Geometry> getGeometry();
}

gson lib を使用して json に変換する機能のリストを作成します。はるかに大きいことを除いて、結果は次のようになります。

[{"i":"304","g":[{"s":[{"x":-3169996.4370428286,"y":1.1231962684336938E7},{"x":-3287403.71248886,"y":1.1192826925854929] E7},{"x":-2935181.88615077,"y":1.115369116737292E7}....

JsFeature が機能インターフェイスを実装する javascriptobject である JsArray に json を解析できます。

json ベクトルをベクトルごとに解析することなく、残りのデータを取得するにはどうすればよいですか。理想的には、JsGeometry がリストなどを含む Geometry を実装する JavascriptObject クラスである JsList にリストを変換する方法が必要です。

4

1 に答える 1

1

List基になる にすべてを委譲するクラスを実装することもできますが、それは思ったJsArrayほど簡単ではありません (それが GWT に組み込まれていない理由でもあります)。

AutoBean の使用をお勧めします。

interface Factory extends AutoBeanFactory {
   AutoBean<Feature> feature();
}

Factory factory = GWT.create(Factory.class);

Feature feature = AutoBeanCodex.decode(factory, Feature.class, jsonString).as();

List実行時のオーバーヘッドは最小限で、ラッピング aとほぼ同じJsArrayですが、動作させるために何もコーディングする必要はありません。

また、GSON の代わりにサーバー側で AutoBean を使用することもできます。

于 2012-05-08T22:35:41.530 に答える