1

GSONを使用して次のJSON文字列を逆シリアル化するのが好きです。

{
  "type": "FeatureCollection",
  "features": [
    {
      "id": "FSROGD.4440181",
      "geometry": {
        "type": "Point",
        "coordinates": [
          16.7594706041998,
          43.148716514354945
        ]
      }
    }
  ]
}

ResponseFeaturesGeometryCoordinatesという名前の必要なJavaクラスをすでに用意しました。最後のクラスに加えて、すべてが正常に機能します。しかし、Coordinatesの場合、メンバー変数として準備できるキーがないため、何を書くべきかわかりません。
これが親のGeometryクラスです...

package info.metadude.trees.model.vienna;    
import com.google.gson.annotations.SerializedName;

public class Geometry {     
    @SerializedName("type")
    public String type;

    // TODO: Prepare Coordinates class for GSON.
    // @SerializedName("coordinates")
    // public Coordinates coordinates;
}

...そして空のCoordinatesクラス。

package info.metadude.trees.model.vienna;    
public class Coordinates {
    // TODO: No idea what should be defined here.
}
4

1 に答える 1

2

coordinatesのコレクションプロパティとして使用できますGeometry。これにより、値が適切なプロパティに自動的にマップされます。

import java.util.List;

import com.google.gson.Gson;

public class GSonTest {

    public static void main(final String[] args) {
        Gson gson = new Gson();
        System.out.println(gson.fromJson("{        \"type\": \"Point\",        \"coordinates\": [          16.7594706041998,          43.148716514354945        ]      }", Geometry.class));
    }

    public static class Geometry {

        List<Float> coordinates;

        public List<Float> getCoordinates() {
            return coordinates;
        }

        public void setCoordinates(final List<Float> coordinates) {
            this.coordinates = coordinates;
        }

        @Override
        public String toString() {
            return "Geometry [coordinates=" + coordinates + "]";
        }

    }

}
于 2012-06-24T10:50:02.110 に答える