Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring for android:如何解析具有不同参数的Json对象_Android_Json_Spring - Fatal编程技术网

Spring for android:如何解析具有不同参数的Json对象

Spring for android:如何解析具有不同参数的Json对象,android,json,spring,Android,Json,Spring,我得到了以下Json: "geometries": [ { "type": "Polygon", "coordinates": [ [ [ 4.8979805,

我得到了以下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
                            ]
                        ]
                    ]
                }
            ]
        }
可以有
多边形
。我正在使用spring for android解析Json。 但是,由于
几何图形
具有不同的
坐标
类型(double数组的数组或double数组),我不确定如何执行此操作

Json如果来自外部源代码,则无法对此做太多工作

有人能帮我吗


提前感谢

您可以检查与键
坐标相关的值类型

根据值的类型,您可以决定行为

您可以使用
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
  }
 }
}
Map-jsonMap=gson.formJson(jsonStr,Map.class);
List=jsonMap.get(“几何图形”);
foreach(映射:列表){
List objList=map.get(“坐标”);
foreach(对象对象:对象列表){
if(obj实例列表){
//obj是双精度数组
}否则,如果(双倍obj安装){
//obj是双倍/实际值
}
}
}

您可以将坐标定义为<代码>列表坐标在使用坐标之前(即在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;
    }
}
class-MyClass{
几何体[];
几何体[]获取几何体(){
返回几何;
}
void集合几何图形(几何图形[]几何图形){
这是。几何=几何;
}
}
类几何{
字符串类型;
列出坐标;
字符串getType(){
返回类型;
}
void setType(字符串类型){
this.type=type;
}
列表getCoordinates(){
返回坐标;//您可以简单地返回更高级的内容,例如List
}
void集合坐标(列表坐标){
这个。坐标=坐标;
}
}

坐标键是一个字符串值。我知道如何使用instanceof,问题是Spring检查变量名,然后将值放入正确的变量名中。我不知道如何用两种同名的不同类型来修复它。所以我需要知道如何告诉Spring将正确的类型连接到坐标变量,使用Spring for Android解析JSON是什么意思?您是否在使用Jackson解析JSON?它是一个在Android上解析Json的库。我使用Gson解析Json,那么Spring……它解决了问题吗?我使用了另一种解决方案,它更容易用Spring为android实现。无论如何谢谢你!考虑一个更好的用户名:PPL不喜欢回答这里的游牧民:谢谢你的提示,这是我在这里问的第二个问题,我通常从这里回答的其他问题得到我的答案,所以我真的不想改变我的用户名。