我跟随Json:
"geometries": [
{
"type": "Polygon",
"coordinates": [
[
[
4.8979805,
52.3798389
],
[
4.8982922,
52.3801447
],
[
4.9027811,
52.378504
]
]
]
},
{
"type": "Point",
"coordinates": [
4.7622823,
52.3095072
]
},
{
"type": "Polygon",
"coordinates": [
[
[
4.4665891,
51.9253793
],
[
4.4700603,
51.926059
],
[
4.4707517,
51.9247593
],
[
4.4706054,
51.9247303
]
]
]
}
]
}
哪个可以Polygons
和Points
。我使用spring for android来解析Json。
但是因为geometries
有不同的coordinates
类型(双重数组数组的数组,只是double数组),我不知道该怎么做。
Json如果来自外部来源,那么就无法做很多事情。
任何人都可以帮助我吗?
提前致谢
答案 0 :(得分:0)
您可以检查与键coordinates
根据值的类型,您可以决定行为。
您可以使用instanceof
所以在你的情况下,你可以像这样检查 - >
if(object instanceof List) {
//Array of Array of Array of Double
} else if(object instance of Map) {
//Array of Double
}
您可以使用此代码 -
Map<String, Object> jsonMap = gson.formJson(jsonStr, Map.class);
List<Map<String, Object>> list = jsonMap.get("geometries");
foreach(Map<String, Object> map : list) {
List<Object> objList = map.get("coordinates");
foreach(Object obj : objList) {
if(obj instanceof List) {
//obj is Array of Double
} else if(obj instace of Double){
//obj is Double/Actual value
}
}
}
答案 1 :(得分:0)
您可以将坐标定义为;在使用坐标之前(即在getter方法中)List<Object> coordinates;
之后,您可以检查是否对其进行后期处理,在后期处理中您可以进一步执行。
我想这会对你有帮助
class MyClass {
Geometry geometries[];
Geometry[] getGeometries() {
return geometries;
}
void setGeometries(Geometry[] geometries) {
this.geometries = geometries;
}
}
class Geometry {
String type;
List<Object> coordinates;
String getType() {
return type;
}
void setType(String type) {
this.type = type;
}
List<Object> getCoordinates() {
return coordinates; // you can simply return something more advanced such like List<CoordinateInterface>
}
void setCoordinates(List<Object> coordinates) {
this.coordinates = coordinates;
}
}