0

我得到了以下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
                            ]
                        ]
                    ]
                }
            ]
        }

哪个可以有PolygonsPoints。我正在使用spring for android来解析Json。但是因为它们geometries有不同的coordinates类型(双数组数组或双数组数组),我不知道该怎么做。

Json 如果来自外部来源,那么对此无能为力。

谁能帮我?

提前致谢

4

2 回答 2

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
  }
 }
}
于 2013-08-19T12:25:25.310 回答
0

您可以将坐标定义为;List<Object> coordinates;在使用坐标之前(即在 getter 方法中)之后,您可以检查您是否对其进行后处理,并且在后处理中您可以做任何进一步的事情。

我想这会对你有所帮助

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;
    }
}
于 2013-08-19T13:51:33.190 回答