Spring for android:如何解析具有不同参数的Json对象
我得到了以下Json:Spring for android:如何解析具有不同参数的Json对象,android,json,spring,Android,Json,Spring,我得到了以下Json: "geometries": [ { "type": "Polygon", "coordinates": [ [ [ 4.8979805,
"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不喜欢回答这里的游牧民:谢谢你的提示,这是我在这里问的第二个问题,我通常从这里回答的其他问题得到我的答案,所以我真的不想改变我的用户名。