反序列化:从自定义中获取数据class

Deserialization: get the data from the custom class

我正在尝试获取我从 Web 服务获取的 route, direction, longitude and latitude。我创建了 MapDataJSON class 以使用 'Gson' 库反序列化 json 字符串,但我不知道如何从 MapDataJSON 对象获取数据。如何从 MapDataJSSON class 获取数据 route, direction, latitude and longitude

感谢任何帮助。

Json 字符串

[
  {
    "latitude": 20.123456,
    "longitude": 70.123456,
    "route": 4,
    "direction": "ABC"
   },

   {
    "latitude": 30.123456,
    "longitude": 80.123456,
    "route": 9,
    "direction": "DEF"
   },
     {
    "latitude": 10.123456,
    "longitude": 90.123456,
    "route": 3,
    "direction": "GHI"
   }

]

代码:

        Gson gson = new Gson();
        MapDataJSON[] data = gson.fromJson(sb.toString(),
                MapDataJSON[].class);

MapDataJSON class:

package com.json;

import java.util.ArrayList;

public class MapDataJSON {
    ArrayList<ItemDTO> items;

    public MapDataJSON(ArrayList<ItemDTO> items) {
        super();
        this.items = items;
    }

    public ArrayList<ItemDTO> getItems() {
        return items;
    }

    public void setItems(ArrayList<ItemDTO> items) {
        this.items = items;
    }

    public static class ItemDTO {
        double latitude;
        double longitude;
        int route;
        String direction;

        public ItemDTO(double latitude, double longitude, int route,
                String direction) {
            super();
            this.latitude = latitude;
            this.longitude = longitude;
            this.route = route;
            this.direction = direction;
        }

        public double getLatitude() {
            return latitude;
        }

        public double getLongitude() {
            return longitude;
        }

        public int getRoute() {
            return route;
        }

        public String getDirection() {
            return direction;
        }

        public void setLatitude(double latitude) {
            this.latitude = latitude;
        }

        public void setLongitude(double longitude) {
            this.longitude = longitude;
        }

        public void setRoute(int route) {
            this.route = route;
        }

        public void setDirection(String direction) {
            this.direction = direction;
        }
    }

}

只需更改您的代码以阻止下方。您不需要 MapDataJSON 来包装物品。

Gson gson = new Gson();
Type listType = new TypeToken<List<ItemDTO>>() {}.getType();
List<ItemDTO> data = gson.fromJson(json, listType);

for (ItemDTO itemDTO : data) {
    System.out.print(itemDTO.getLatitude());
}