首页 > 解决方案 > Android Retrofit - 数组数据为空

问题描述

我想使用 Retrofit 从服务器接收 Json 数据。下面是数据类和 Json 示例。

完成传输后,“页面”对象从 Response.body() 返回。但在其中,数组“cards”的值为“null”。

我怎样才能得到正确的数据?

[Page.java]============

public class Page {
    public List<Cards> cards;
    public Page(List<Cards> cards) {
        this.cards = cards;
    }
    public class Cards {
        public String card_type;
        public Cards(String card_type) {
            this.card_type = card_type;
        }
    }
}

[Json 示例]===============

{
    "page": {
        "cards": [
          {
            "card_type": "text",
            "card": {
              "value": "Hello, Welcome to App!",
              "attributes": {
                "text_color": "#262626",
                "font": {
                  "size": 30
                }
              }
            }
          },
          {
            "card_type": "title_description",
            "card": {
              "title": {
                "value": "Check out our App every week for exciting offers.",            
                "attributes": {
                  "text_color": "#262626",
                  "font": {
                    "size": 24
                  }
                }
              },
              "description": {            
                "value": "Offers available every week!",
                "attributes": {
                  "text_color": "#262626",
                  "font": {
                    "size": 18
                  }
                }
              }
            }
          },
       ]
     }
}

标签: jsonretrofit

解决方案


首先你的模型类没有get方法,你的方法是setter而不是getter,没有getter方法你不能得到数据,改变你的模型如下:

起初,不要使用内部类,将类分开在一起

public class Page {
    public List<cards> cards;
    public List<cards> getCards() {
       return cards;
    }

public class cards {
    public String card_type;
    public String getCard_type() {
        return card_type;
    }

      public card card;
      public card getCard() {
            return card;
        }
 }

  public class card {
        public String value;
        public String getValue() {
            return value;
        }
    public attributes attributes;
       public String getAttributes() {
            return attributes;
        }
}

现在这些类对您的卡片索引 0 是正确的,但是您的 Json 样本在下一个索引处没有组织……但是您可以制作标题类或描述类并将其添加到卡片类中,以便从列表的任何索引中获取更多数据。


推荐阅读