2016-04-29 29 views
2

唯一の依存関係としてGsonを使用してGeoJsonを読み込むアプリケーションを作成したいと思います。 Gsonを使用するのは歩行者がかなりですが、座標の無名配列については、私は迷っています。 'coordinates'配列は配列の配列です。 AAARRRGGG!GsonでGeoJsonを解析するにはどうすればよいですか?

"geometry":{ 
     "type":"Polygon", 
     "coordinates":[ 
     [ 
      [ 
       -69.899139, 
       12.452005 
      ], 
      [ 
       -69.895676, 
       12.423015 
      ], 

他のすべてのデータを読み込むことはできますが、 '座標'配列には名前がありません。どうすれば読み込むことができますか?

私は...

public static final class Coordinate { 
     public final double[] coord; 

     public Coordinate(double[] coord) { 
      this.coord = coord; 
     } 
    } 

すべてのヘルプこのしかし、誰喜びのいくつかの繰り返しを試してみましたか?私はgeojsonを解析するパッケージが既にあることを知っていますが、JSONの読み込みを理解したいと思います。名前のない配列は何ですか?匿名配列はうまくいけません!

+0

は、あなただけの ''ダブル[] [] [] 'をcoord'作ることができませんか? – azurefrog

+0

動作していないようです。同じエラーを取得... – markthegrea

答えて

1

座標フィールドをdouble[][][]と宣言することで、Gsonに3重ネストネームレスの配列を解析させることができます。

は、ここでそれを行う方法を示して実行可能なサンプルプログラムです:

import org.apache.commons.lang3.ArrayUtils; 
import com.google.gson.Gson; 

public class Scratch { 
    public static void main(String[] args) throws Exception { 
     String json = "{" + 
       " \"geometry\": {" + 
       "  \"type\": \"Polygon\"," + 
       "  \"coordinates\": [" + 
       "   [" + 
       "    [-69.899139," + 
       "     12.452005" + 
       "    ]," + 
       "    [-69.895676," + 
       "     12.423015" + 
       "    ]" + 
       "   ]" + 
       "  ]" + 
       " }" + 
       "}"; 

     Geometry g = new Gson().fromJson(json, Geometry.class); 
     System.out.println(g); 
     // Geometry [geometry=GeometryData [type=Polygon, coordinates={{{-69.899139,12.452005},{-69.895676,12.423015}}}]] 
    } 
} 
class Geometry { 
    GeometryData geometry; 

    @Override 
    public String toString() { 
     return "Geometry [geometry=" + geometry + "]"; 
    } 
} 
class GeometryData { 
    String type; 
    double[][][] coordinates; 

    @Override 
    public String toString() { 
     return "GeometryData [type=" + type + ", coordinates=" + ArrayUtils.toString(coordinates) + "]"; 
    } 
} 
関連する問題