如何使用 gson 将 JsonObject 解析为 List<MyClass>

How to parse JsonObject to List<MyClass> using gson

我需要一个对象列表,但在获取它时遇到了问题。我是新手,有人可以帮助我吗?

我正在使用 volley 获取一个 json 对象,然后我需要转换它(我看到最好的方法是使用 gson)。下面你可以看到我的 json.

的例子
{
network: {
    company: "JCDecaux",
    href: "/v2/networks/dublinbikes",
    id: "dublinbikes",
    location: {
        city: "Dublin",
        country: "IE",
        latitude: 53.3498053,
        longitude: -6.2603097
    },
    name: "dublinbikes",
    stations: [
        {
            empty_slots: 37,
            extra: {
                address: "Fitzwilliam Square East",
                bonus: false,
                connected: "1",
                last_update: "1434047944",
                open: true,
                slots: 40,
                ticket: true,
                uid: 89
            },
            free_bikes: 3,
            id: "153ff4dfb7bd8912ef91c10849129c2e",
            latitude: 53.335211,
            longitude: -6.2509,
            name: "Fitzwilliam Square East",
            timestamp: "2015-06-11T18:41:31.11Z"
        },
        {
            empty_slots: 0,
            extra: {
                address: "Portobello Harbour",
                bonus: false,
                connected: "1",
                last_update: "1434047764",
                open: true,
                slots: 30,
                ticket: false,
                uid: 34
            },
            free_bikes: 30,
            id: "3c0cfd547a142bb651280991a412bcbe",
            latitude: 53.330362,
            longitude: -6.265163,
            name: "Portobello Harbour",
            timestamp: "2015-06-11T18:41:31.15Z"
        },

...等等

车站class

public class Station {
    public Station(){}

    public String StationName;
    public String Distance;
    public String Slots;
    public String Bikes;
    public String LastUpdate;

    //Getters and Setters ...
}

下面你可以看到我到目前为止所做的..

 //stations
 JSONObject jsonNetwork = new JSONObject(response.getString("network"));

   Type listType = new TypeToken<ArrayList<Station>>() {
                }.getType();
   List<Station> yourClassList = new Gson().fromJson(jsonNetwork, listType);

但我不知道如何解析所有这些并避免我不需要的数据以及函数 Gson().fromJson 需要和 JsonArray,而我拥有的是 JsonObject

感谢您的宝贵时间!

使用下面的代码

Gson gson = new Gson();
YourClass obj = gson.fromJson(jsonObject.toString(), YourClass.class);

如果您要查找的只是电台,那么我认为您应该执行以下操作:

//stations
    JSONObject jsonNetwork = new JSONObject(response.getString("network"));
    JSONArray stationsArray = jsonNetwork.getJSONArray("stations");

现在,您应该将此 stationsArray 变量传递给 fromJson 方法。此外,您的 Station class 的变量名应该等于您要从 json 中提取的键名。下面是一个很好的例子link:

http://www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/