Java:预期BEGIN_OBJECT但在第1行第2列路径$是BEGIN_ARRAY

时间:2016-09-21 08:56:17

标签: android json retrofit

解决了!检查下面的答案

我正在使用GitHub仓库,想要访问用户的名字'回购。 JSON看起来像这样:

 [
      {
         "id": 55848012,
          "name": "Android",
          "full_name": "VyaraGGeorgieva/Android"
          ...
          ...
}
]

我有一个Repo课程

public class Repo {

@SerializedName("name")
private String name;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

}

一个类,存储返回的查询:

public class GitHubRepos {

private Repo[] repos;

public Repo[] getRepos() {
    return repos;
}

public void setRepos(Repo[] repos) {
    this.repos = repos;
}

endPoint定义如下:

 @GET("/users/{user}/repos")
Call<List<GitHubRepos>> getRepoName(@Path("user") String name);

当我尝试执行调用时:

call.enqueue(new Callback<List<GitHubRepos>>() {
        @Override
        public void onResponse(Call<List<GitHubRepos>> call, Response<List<GitHubRepos>> response) {
            Repo[] repos = response.body().**getRepos()**;
            Log.d("Repos: ", "Number of repos received: " + repos.length);
        }

以这种方式定义,我无法访问getRepos()方法。

我没有正确定义某些类型,但不确定如何解决问题。

1 个答案:

答案 0 :(得分:2)

你需要传递List而不是Object。

call.enqueue(new Callback<List<GitHubRepos>>() {
        //override method.
    });