android - 包含 ArrayList 语法异常的 Gson 对象

标签 android json gson

我有一个名为 Route 的对象,它存储 RouteStep 对象的 ArrayList。

一个 RouteStep 对象存储了 int[] 的 ArrayList。

这里是类的示例。它们包含其他字段,但我在这里省略了它们:

public class Route {

    @Expose private long routeId;
    @Expose private List<RouteStep> routeSteps;

    public Route() {}

    public long getRouteId() {
        return routeId;
    }

    public void setRouteId(long routeId) {
        this.routeId = routeId;
    }


    public List<RouteStep> getRouteSteps() {
        return routeSteps;
    }

    public void setRouteSteps(List<RouteStep> routeSteps) {
        this.routeSteps = routeSteps;
    }
}

public class RouteStep {

    @Expose private ArrayList<int[]> coordinates = new ArrayList<int[]>();

    public RouteStep() {}

    public ArrayList<int[]> getCoordinates() {
        return coordinates;
    }

    public void setCoordinates(ArrayList<int[]> coordinates) {
        this.coordinates = coordinates;
    }       
}

下面是需要解析的Json示例:

[
    {
        "routeId": -1,
        "user": "aa",
        "date": "08/01/2013 18:20:49",
        "routeName": "route 1",
        "distance": 536.4938,
        "routeSteps": [
            {
                "type": "LineString",
                "coordinates": [
                    [
                        55.940847,
                        -3.182992000000008
                    ],
                    [
                        55.941983999999984,
                        -3.186577000000001
                    ],
                    [
                        55.94265899999998,
                        -3.19088
                    ]
                ]
            }
        ]
    },
    {
        "routeId": -2,
        "user": "aa",
        "date": "08/01/2013 18:21:39",
        "routeName": "route 2",
        "distance": 455.127,
        "routeSteps": [
            {
                "type": "LineString",
                "coordinates": [
                    [
                        55.94265899999998,
                        -3.19088
                    ],
                    [
                        55.942732999999976,
                        -3.191536000000003
                    ],
                    [
                        55.94519300000003,
                        -3.19124800000001
                    ],
                    [
                        55.946433,
                        -3.191014999999997
                    ]
                ]
            }
        ]
    }
]

我的课上有这个用来解析 Json:

Gson gson = new Gson();

        try {
            routes = gson.fromJson(json, Route[].class);                
        } catch(JsonSyntaxException e1) {
            Log.e(TAG, "Syntax exception in retrieved JSON");
        } catch(JsonParseException e2) {
            Log.e(TAG, "Exception occured parsing retrieved JSON");
        }   

运行时,我一直收到 JsonSyntaxExceptions。我使用了相同的代码来解析包含原始类型的 ArrayLists 的对象数组,例如 int[] 但我不确定当 ArrayList 包含我自己类型的对象时该怎么做。

最佳答案

发布您的实际堆栈跟踪会有所帮助,但是......您有:

private ArrayList<int[]> coordinates = new ArrayList<int[]>();

并试图解析:

[
    55.940847,
    -3.182992000000008
],

那些不是 int。解决这个问题,它应该可以正常工作。

关于android - 包含 ArrayList 语法异常的 Gson 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14415755/

相关文章:

android - manifest中的original-package有什么用

javascript - JSON从js到MVC Controller

javascript - 当对象非常多并且我试图在范围内访问它时,为什么我会得到 "Can not read property 0 of undefined"?

android - 在 YUV 颜色空间中操纵亮度

java - @Override 在 eclipse 中给出错误?

android - 如何在 api 16 以下使用 chrome 自定义标签?

c# - 有没有办法让 JSON.net 尊重 System.Text.Json JsonPropertyName 属性

java - 如何处理 Retrofit 2 中不同模式的错误?

java - 有没有有效的方法使用 GSON 将 org.json.JSONObject 转换为 POJO 模型?

android - 任何参数都不能使用 Gson 提供的参数来调用