我喜欢使用GSON反序列化以下JSON字符串。
{
"type": "FeatureCollection",
"features": [
{
"id": "FSROGD.4440181",
"geometry": {
"type": "Point",
"coordinates": [
16.7594706041998,
43.148716514354945
]
}
}
]
}
我已经准备好了名为 Response , Features , Geometry 和 Coordinates 的必要Java类。除了最后一堂课,一切都很好。但对于坐标,我不明白我应该写什么,因为没有给出我可以准备作为成员变量的键。
这是父 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;
}
...和空坐标类。
package info.metadude.trees.model.vienna;
public class Coordinates {
// TODO: No idea what should be defined here.
}
答案 0 :(得分: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 + "]";
}
}
}