java - 我如何使用改造和recyclerView解析json对象

标签 java android json gson retrofit

我正在使用 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/

相关文章:

javascript - 具有模式 Bootstrap 的自动完成 Codeigniter 不起作用

java - 如何使用 Okta 对用户进行身份验证而不重定向到 Okta 登录

Android BLE 在绑定(bind)后断开连接

java - 如何解决 Android Studio 编译时出现的与 .class 相关的文件未找到错误?

android - 数据库未存储在 Android 手机设备上

java - 如何使用 Retrofit 解析 JSON

java - 验证(单位测量)

java - HttpSession 中的同步是否可行?

java - 不允许在调用 super 构造函数时使用实例变量和方法

java - eclipse调试 'source no found'