我有这个json数组:
[ { "id":18, "city":"הרצליה", "street":"החושלים 1", "zipcode":121209, "state":"IL", "lat":32.158138, "lng":34.807838 }, { "id":19, "city":"הרצליה", "street":"אבא אבן 1", "zipcode":76812, "state":"IL", "lat":32.161041, "lng":34.810410 } ]
我有这个类来保存数据:
public class MapData { private int id; private String city; private String street; private String state; private int zipcode; private double lat; private double lng; public MapData(int id, String city, String street, String state, int zipcode, double lat, double lng) { this.id = id; this.city = city; this.street = street; this.state = state; this.zipcode = zipcode; this.lat = lat; this.lng = lng; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } public String getState() { return state; } public void setState(String state) { this.state = state; } public int getZipcode() { return zipcode; } public void setZipcode(int zipcode) { this.zipcode = zipcode; } public double getLat() { return lat; } public void setLat(double lat) { this.lat = lat; } public double getLng() { return lng; } public void setLng(double lng) { this.lng = lng; } }
我正在尝试将json转换为MapData对象的列表:
Type type = new TypeToken<List<MapData>>(){}.getType(); return gson.fromJson(jsonString, type);
但是我得到这个错误:
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to com.deliveries.models.MapData
我究竟做错了什么?
我怀疑方法调用fromJson返回错误的类型。它应该返回List<MapData>而不是MapData。
fromJson
List<MapData>
MapData
就像是:
public static List<MapData> getData(){ Gson gson = new Gson(); String jsonString = "[{\"id\":18,\"city\":\"test\",\"street\":\"test 1\",\"zipcode\":121209,\"state\":\"IL\",\"lat\":32.158138,\"lng\":34.807838},{\"id\":19,\"city\":\"test\",\"street\":\"1\",\"zipcode\":76812,\"state\":\"IL\",\"lat\":32.161041,\"lng\":34.810410}]"; Type type = new TypeToken<List<MapData>>(){}.getType(); return gson.fromJson(jsonString, type); }
在这个要点中,我有一个很好的例子说明了您的问题