1

I have an object called Route which stores an ArrayList of RouteStep objects.

A RouteStep object stores and ArrayList of int[].

Here is a sample of the classes. They contain other fields but I have omitted them here:

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;
    }       
}

Here is an example of the Json that needs to be parsed:

[
    {
        "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
                    ]
                ]
            }
        ]
    }
]

I have this in my class which is meant to parse the 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");
        }   

I keep getting JsonSyntaxExceptions when this runs. I have used the same code to parse arrays of objects that contain ArrayLists of primitive types such as int[] but I am not sure how to do it when the ArrayList contains objects of my own type.

1 Answer 1

3

Posting your actual stack trace would help but ... you have:

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

And are trying to parse:

[
    55.940847,
    -3.182992000000008
],

Those aren't ints. Fix that and it should work fine.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.