Java 如何使用改型和recyclerView解析json对象
我正在使用GitHub API在我的应用程序中显示最受欢迎的存储库以及它们的名称、头像和recyclerView中的描述,但当我在应用程序中使用午餐时,除了头像url和登录名之外,所有内容都正常工作 这是来自GithubAPI的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
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;}