首先我知道其他一些用户之前已经提出了类似的问题,所以你可能会认为这是一个重复的问题,但事实并非如此。
我想创建一个模型类来解析从JSON格式到java对象的GoogleMaps-Direction API响应。
主要目标是使用volley库创建自定义请求对象,以便我可以使用Web服务并将响应自动转换为Java对象。
正如您在下面的屏幕截图中看到的,json响应由三个根元素组成。前两个是数组,至少,据我所知,[]符号用于表示JSON中的数组,第三个只是一个字符串值。
因此,在模型类中,我尝试执行以下操作,声明一些属性来表示JSON响应中的这些元素。
最后,我创建了一个新的android studio项目来测试这个应用程序。您也可以看到自定义请求的代码。
我可以理解该消息的含义,但我不能完全理解为什么会这样。异常消息指向响应中的第16行。我尝试使用JSONArray
和JSONObject
类获得相同的结果
答案 0 :(得分:2)
问题是,GSON尝试在JSON字符串中找到geocodedWaypoints对象,当它发生时,它会尝试将其值解析为JSONArray的实例。但话说回来,JSONArray本身就是一个对象,并且还需要一个标识符。因此,要将数组用作值,您应该使用常规数组类型,例如String[]
。
将GoogleMapsResponse类更改为:
public class GoogleMapsResponse {
private GeocodedWaypoint[] geocodedWaypoints;
private Route[] routes;
private String status;
}
为所有其他对象创建类:
public class GeocodedWaypoint {
private String geocoderStatus;
private boolean partialMatch;
private String placeId;
private String[] types;
}
等