Java 如何使用改型和recyclerView解析json对象

Java 如何使用改型和recyclerView解析json对象,java,android,json,gson,retrofit,Java,Android,Json,Gson,Retrofit,我正在使用GitHub API在我的应用程序中显示最受欢迎的存储库以及它们的名称、头像和recyclerView中的描述,但当我在应用程序中使用午餐时,除了头像url和登录名之外,所有内容都正常工作 这是来自GithubAPI的JSON 我试过这个: 客户端类: import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; public class Client { public st

我正在使用GitHub API在我的应用程序中显示最受欢迎的存储库以及它们的名称、头像和recyclerView中的描述,但当我在应用程序中使用午餐时,除了头像url和登录名之外,所有内容都正常工作

这是来自GithubAPI的JSON

我试过这个: 客户端类:

import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class Client {
    public static final String BASE_URL="https://api.github.com";
    public static Retrofit retrofit=null;

    public static Retrofit getClient()
    {
        if(retrofit==null)
        {
            retrofit=new Retrofit.Builder().baseUrl(BASE_URL).addConverterFactory(GsonConverterFactory.create()).build();

        }
        return retrofit;
    }
}
package com.example.gethubapi.api;

import com.example.gethubapi.model.ItemResponse;

import retrofit2.Call;
import retrofit2.http.GET;

public interface Service {

    @GET("/search/repositories?q=created:>2017-10-22&sort=stars&order=desc&page=2")
    Call<ItemResponse> getItems();
}
服务类别:

import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class Client {
    public static final String BASE_URL="https://api.github.com";
    public static Retrofit retrofit=null;

    public static Retrofit getClient()
    {
        if(retrofit==null)
        {
            retrofit=new Retrofit.Builder().baseUrl(BASE_URL).addConverterFactory(GsonConverterFactory.create()).build();

        }
        return retrofit;
    }
}
package com.example.gethubapi.api;

import com.example.gethubapi.model.ItemResponse;

import retrofit2.Call;
import retrofit2.http.GET;

public interface Service {

    @GET("/search/repositories?q=created:>2017-10-22&sort=stars&order=desc&page=2")
    Call<ItemResponse> getItems();
}

因为登录和化身url位于所有者对象下。 您需要为所有者对象创建一个单独的类,就像您为单个项目所做的那样。
别忘了在你的物品类中提到对象类。

因为登录名和头像url在owner object下。 您需要为所有者对象创建一个单独的类,就像您为单个项目所做的那样。
不要忘记在Item类中提到object类。

查看JSON响应,Owner对象是Item对象的一部分。这意味着它嵌套在Item对象中

public class Owner {
@SerializedName("avatar_url")
@Expose
private String avatarUrl;

@SerializedName("login")
@Expose
 private String login;

 public Owner(){}

 public void setAvatarUrl(String avatar_URL){
 this.avatarUrl = avatar_URL;
 }

 pubic String getAvatarUrl(){
 return avatarUrl;
 }

 public String getLogin(){
  return login;
 }

 public void setLogin(String login){
  this.login = login;}
  }

public class Item {
    @SerializedName("name")
    @Expose
    private String name;

    @SerializedName("description")
    @Expose
    private String description;

    @SerializedName("owner")
    @Expose
    private Owner owner;

     @SerializedName("stargazers_count")
    @Expose
    private int stargazers;
    .........
    }

查看JSON响应,所有者对象是Item对象的一部分。这意味着它嵌套在Item对象中

public class Owner {
@SerializedName("avatar_url")
@Expose
private String avatarUrl;

@SerializedName("login")
@Expose
 private String login;

 public Owner(){}

 public void setAvatarUrl(String avatar_URL){
 this.avatarUrl = avatar_URL;
 }

 pubic String getAvatarUrl(){
 return avatarUrl;
 }

 public String getLogin(){
  return login;
 }

 public void setLogin(String login){
  this.login = login;}
  }

public class Item {
    @SerializedName("name")
    @Expose
    private String name;

    @SerializedName("description")
    @Expose
    private String description;

    @SerializedName("owner")
    @Expose
    private Owner owner;

     @SerializedName("stargazers_count")
    @Expose
    private int stargazers;
    .........
    }

但是我可以在Item constructorpublic Item(String name,String description,Owner-Owner,int-stargazers)中做什么{this.name=name;this.description=description;this.Owner=Owner;this.stargazers=stargazers;}但是我可以在Item constructorpublic Item中做什么呢(字符串名称,字符串描述,所有者所有者,int stargazers){this.name=name;this.description=description;this.Owner=Owner;this.stargazers=stargazers;}