【问题标题】:get JSON array data获取 JSON 数组数据
【发布时间】:2020-05-10 05:19:30
【问题描述】:

我有一个 JSON 数组。像这样:

[
  {
    "id": 3110,
    "title": {
      "rendered": "Dr Abul Khair"
    },
    "medilink_degree": "Associate Professor
  }
] 

通过使用改造,我可以在我的 android 应用程序中获得 idmedilink_degree。但是title 无法检索,因为它的格式如下:

"title":{"rendered":"Dr Abul Khair"}

我正在使用@SerializedName("id") 获取数据

但是,我怎样才能得到标题呢?我用@SerializedName("title.rendered")。它不工作。

【问题讨论】:

    标签: android json retrofit


    【解决方案1】:

    请使用以下模型类从 API 获取数据。

    public class Title {
    
    @SerializedName("rendered")
    @Expose
    private String rendered;
    
    public String getRendered() {
    return rendered;
    }
    
    public void setRendered(String rendered) {
       this.rendered = rendered;
    }
    
    }
    
    public class User {
    
    @SerializedName("id")
    @Expose
    private Integer id;
    @SerializedName("title")
    @Expose
    private Title title;
    @SerializedName("medilink_degree")
    @Expose
    private String medilinkDegree;
    
    public Integer getId() {
    return id;
    }
    
    public void setId(Integer id) {
    this.id = id;
    }
    
    public Title getTitle() {
    return title;
    }
    
    public void setTitle(Title title) {
    this.title = title;
    }
    
    public String getMedilinkDegree() {
    return medilinkDegree;
    }
    
    public void setMedilinkDegree(String medilinkDegree) {
    this.medilinkDegree = medilinkDegree;
    }
    
    }
    

    您可以查看以下链接如何使用改造通过模型类获取数据。

    https://medium.com/@prakash_pun/retrofit-a-simple-android-tutorial-48437e4e5a23

    【讨论】:

    • 那么我必须在我的 RecyclerView 适配器中调用哪个方法来获取数据。是getRendered()还是getTitle()
    • 你必须使用 getTitle() 并且从方法中你可以得到 getRendered()。谢谢。
    【解决方案2】:

    您必须创建名为 Title 的单独类,并且必须定义渲染变量。这是代码供参考。

        public class DoctorProfile {
    
            @SerializedName("id")
            private int id;
            @SerializedName("title")
            private Title title;
            @SerializedName("medilink_degree")        
            private String medilinkDegree;
    
         //getter-setter methods   
    
           public static class Title {
               @SerializeName("rendered")
               private String rendered;
               //getter-setter method
            }
        }
    

    【讨论】:

    • 那么我必须在我的 RecyclerView 适配器中调用哪个方法来获取数据。是getRendered()还是getTitle()
    • 你必须先调用getTitle(),它返回Title对象,在这个对象的帮助下你可以调用Title类中的getRendered()。
    • 知道了。非常感谢
    【解决方案3】:
    package com.example.product;
    
    import com.google.gson.annotations.Expose;
    import com.google.gson.annotations.SerializedName;
    
    public class CategoryResponse {
    
    @SerializedName("id")
    @Expose
    private Integer id;
    @SerializedName("title")
    @Expose
    private Title title;
    @SerializedName("medilink_degree")
    @Expose
    private String medilinkDegree;
    
    public Integer getId() {
    return id;
    }
    
    public void setId(Integer id) {
    this.id = id;
    }
    
    public Title getTitle() {
    return title;
    }
    
    public void setTitle(Title title) {
    this.title = title;
    }
    
    public String getMedilinkDegree() {
    return medilinkDegree;
    }
    
    public void setMedilinkDegree(String medilinkDegree) {
    this.medilinkDegree = medilinkDegree;
    }
    
    }
    

    你可以得到如下标题:

    CategoryResponse categoryResponse= assign your reponse;
    String title = categoryResponse.getTitle().getRendered();
    Log.e("Title: ", ""+ title);
    

    你可以从here创建你的回复pojo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-02
      • 1970-01-01
      • 2013-02-19
      • 2021-11-08
      相关资源
      最近更新 更多