gpt4 book ai didi

java - 我如何用 Gson 解析 GeoJson?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:15:08 25 4
gpt4 key购买 nike

我想编写一个应用程序,它将使用 Gson 作为唯一的依赖项来加载 GeoJson。使用 Gson 非常简单,但是当涉及到坐标的匿名数组时,我不知所措。 “坐标”数组是数组的数组。 AAARRRGGG!

"geometry":{  
"type":"Polygon",
"coordinates":[
[
[
-69.899139,
12.452005
],
[
-69.895676,
12.423015
],

我可以加载所有其他数据,但“坐标”数组没有名称,那么我该如何加载它们呢?

我已经尝试了几次这样的迭代,但没有任何乐趣......

public static final class Coordinate {
public final double[] coord;

public Coordinate(double[] coord) {
this.coord = coord;
}
}

有什么帮助吗?我知道已经有解析 geojson 的包,但我想了解 JSON 加载。什么叫未命名数组?匿名数组在 google 上不是很好!

最佳答案

您可以通过将坐标字段声明为 double[][][] 让 Gson 解析三层嵌套的无名数组。

这是一个可运行的示例程序,演示了如何执行此操作:

import org.apache.commons.lang3.ArrayUtils;
import com.google.gson.Gson;

public class Scratch {
public static void main(String[] args) throws Exception {
String json = "{" +
" \"geometry\": {" +
" \"type\": \"Polygon\"," +
" \"coordinates\": [" +
" [" +
" [-69.899139," +
" 12.452005" +
" ]," +
" [-69.895676," +
" 12.423015" +
" ]" +
" ]" +
" ]" +
" }" +
"}";

Geometry g = new Gson().fromJson(json, Geometry.class);
System.out.println(g);
// Geometry [geometry=GeometryData [type=Polygon, coordinates={{{-69.899139,12.452005},{-69.895676,12.423015}}}]]
}
}
class Geometry {
GeometryData geometry;

@Override
public String toString() {
return "Geometry [geometry=" + geometry + "]";
}
}
class GeometryData {
String type;
double[][][] coordinates;

@Override
public String toString() {
return "GeometryData [type=" + type + ", coordinates=" + ArrayUtils.toString(coordinates) + "]";
}
}

关于java - 我如何用 Gson 解析 GeoJson?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36946875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com