今天,我尝试使用改装库而不是排球 我的问题是我在回复中得到了这个结果。
Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
我正在尝试解析Google响应,它会返回该错误。
我的Pojo就是这个。
public static class googleMap{
String icon;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
String id;
}
我的界面就是这个。
public interface GoogleCLient {
@GET("json?location=-33.8670522,151.1957362&radius=500&type=restaurant&name=cruise&key=AIzaSyBe7DiT-2GeoUiFEUJkP-TL4JBR2yFoLu4")
Call<List<googleMap>> loadMaps();
}
我的设置和获取响应的代码是这样的。
String URL2 = "https://maps.googleapis.com/maps/api/place/nearbysearch";
GitHubClient client = ServiceGenerator.createService(GitHubClient.class, URL2);
Call<List<googleMap>> call2 = client.loadMaps();
call2.enqueue(new Callback<List<googleMap>>() {
@Override
public void onResponse(Call<List<googleMap>> call, retrofit2.Response<List<googleMap>> response) {
Log.e("Res:", response.body().size());
}
@Override
public void onFailure(Call<List<googleMap>> call, Throwable t) {
Log.e("Err:", t.toString());
}
});
我已经在我的其他课程中创建了Servicegenerator,所以我可以随时调用它,只需将URL作为参数。
我的第一次尝试是工作(不同的URL tho)
但是,当涉及Google地方信息搜索时,
我的代码无效。
在哪里我犯了错误,我该怎么做?
答案 0 :(得分:0)
Google API为您提供的JSON响应是什么?我的猜测是你的POJO是错的,你应该期望一个对象包含一个对象列表而不是一个对象列表
更新: 你确实有一个包含更多对象的复杂对象。使用Json到Java POJO在线工具,例如http://pojo.sodhanalibrary.com/,你得到一个这样的对象:
public class GoogleMapsResponse {
private Results[] results;
private String[] html_attributions;
private String status;
public Results[] getResults ()
{
return results;
}
public void setResults (Results[] results)
{
this.results = results;
}
public String[] getHtml_attributions ()
{
return html_attributions;
}
public void setHtml_attributions (String[] html_attributions)
{
this.html_attributions = html_attributions;
}
public String getStatus ()
{
return status;
}
public void setStatus (String status)
{
this.status = status;
}
@Override
public String toString()
{
return "ClassPojo [results = "+results+", html_attributions = "+html_attributions+", status = "+status+"]";
}
}
请注意,您还需要定义一些对象。请参阅上面的链接以获取完整列表
答案 1 :(得分:0)
考虑到您正在使用this API,您将获得包含结果数组的对象:
{
"html_attributions" : [],
"results" : [
...
],
"status" : "OK"
}
为此定义一个POJO:
public class SearchResult {
List<googleMap> results;
public void setResults(List<googleMap> results) {
this.results = results;
}
public List<googleMap> getResults() {
return results;
}
}
并通过您的电话
返回此信息public interface GoogleCLient {
@GET("json?location=-33.8670522,151.1957362&radius=500&type=restaurant&name=cruise&key=AIzaSyBe7DiT-2GeoUiFEUJkP-TL4JBR2yFoLu4")
Call<SearchResult> loadMaps();
}