我正在使用GitHub API在我的应用程序中显示最多星的存储库及其名称、头像和recyclerView中的描述,但当我午餐时,应用程序一切正常,但头像_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文件,你会发现项目中有一个名为owner的子对象,而我无法直接选择avatar_url的名称和owner名称
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;
}
}
3条答案
按热度按时间pxy2qtax1#
查看JSON响应,Owner对象是Item对象的一部分,这意味着它嵌套在Item对象中。
rkkpypqq2#
因为login和avatar_url在owner对象下,所以你需要为owner对象创建一个单独的类,就像你为一个单独的项目所做的那样。不要忘记在你的Item类中提到对象类。
ac1kyiln3#
在我的情况下,stargazer拼写错误,只是纠正拼写示例:- from
星象仪计数
至
观星者计数。