json - 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
}
}
}
}
},
]
}
}
解决方案
首先你的模型类没有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 样本在下一个索引处没有组织……但是您可以制作标题类或描述类并将其添加到卡片类中,以便从列表的任何索引中获取更多数据。
推荐阅读
- javascript - 在每个月初重置一个计数器
- python - 在另一个列标题中访问列
- c++ - 使用/包含 *.a 静态库创建共享 *.dll 库
- android - 如何序列化字符串资源?
- python - 根据字符串拆分将列表拆分为子列表
- hololens - hololens 模拟器无法连接到共享服务
- angular - 'mat-form-field' 的 Angular 6 错误显示不是已知元素:
- design-patterns - 为什么这个代码在 Kotlin 中是不可能的?
- javascript - pixi.js rotateY 3d 轮播
- dojo - dojox.grid.EnhancedGrid 失去焦点