我正在使用 GitHub API 在我的应用程序中显示最受好评的存储库及其名称、头像和说明,但当我午餐时,应用程序一切正常,但 avatar_url 和登录返回 Null。
这是来自 Github API 的 JSON
https://api.github.com/search/repositories?q=created:%3E2019-10-01&sort=stars&order=desc
我尝试过这个: 客户类别:
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();
}
元素类别 如果您检查上面链接中的 json 文件,您会发现一个名为“所有者”的项目的子对象,而我无法直接选择 avatar_url 的名称和所有者名称
import com.google.gson.annotations.SerializedName;
public class Item {
@SerializedName("avatar_url")
@Expose
private String avatarUrl;
@SerializedName("name")
@Expose
private String name;
@SerializedName("description")
@Expose
private String description;
@SerializedName("login")
@Expose
private String owner;
@SerializedName("stargazers_count")
@Expose
private int stargazers;
public Item(String avatar_url,String name,String description,String owner,int stargazers )
{
this.avatarUrl=avatar_url;
this.name=name;
this.description=description;
this.owner=owner;
this.stargazers=stargazers;
}
public String getAvatarUrl()
{
return avatarUrl;
}
public String getName()
{
return name;
}
public String getDescription()
{
return description;
}
public String getOwner()
{
return owner;
}
public int getStargazers()
{
return stargazers;
}
}
最佳答案
查看 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;
.........
}
关于java - 我如何使用改造和recyclerView解析json对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58695919/