开发者社区> 问答> 正文

使用Serilizable注释检查响应项目的空白值

我正在使用MVVVMPattern进行API调用。一切正常,期望使用数据类在对数据进行序列化时从服务器获得一些空白值。 我有伺服器回应

"items": [
  {
    "id": "1",
    "inspiration_id": "11",
    "name": "xxx",
    "categoryoptions": [
      "x",
      "y",
      "z"
    ]
  },
  {
    "id": "2",
    "inspiration_id": "22",
    "name": "test",
    "categoryoptions": [

    ]
  }

为此,我使用了序列化和改造。

public class InspirationItemsData implements Serializable {

@Expose
@SerializedName("id")
private String id;
@Expose
@SerializedName("inspiration_id")
private String inspiration_id;
@Expose
@SerializedName("name")
private String name;
@Expose
@SerializedName("coordinates")
private String coordinates;
@Expose
@SerializedName("is_request")
private String is_request;

@Expose
@SerializedName("categoryoptions")
List<CategoryOptions> categoryOptionsList = new ArrayList<>();

public InspirationItemsData(String id, String inspiration_id, String name, String coordinates,String is_request) {
    this.id = id;
    this.inspiration_id = inspiration_id;
    this.name = name;
    this.coordinates = coordinates;
    this.is_request = is_request;
}

public List<CategoryOptions> getCategoryOptionsList() {
    return categoryOptionsList;
}

public void setCategoryOptionsList(List<CategoryOptions> categoryOptionsList) {
   this.categoryOptionsList = categoryOptionsList;
}

public String getIs_request() {
    return is_request;
}

public void setIs_request(String is_request) {
    this.is_request = is_request;
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getInspiration_id() {
    return inspiration_id;
}

public void setInspiration_id(String inspiration_id) {
    this.inspiration_id = inspiration_id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getCoordinates() {
    return coordinates;
}

public void setCoordinates(String coordinates) {
    this.coordinates = coordinates;
}

您可以在我的数据类中看到我有具有备用值的categoryoptions数组。在某些项目中,它具有价值,而有些则没有。

所以当我使用这个

@Expose @SerializedName(“ categoryoptions”)列表categoryOptionsList = new ArrayList <>(); 然后我无法得到回应。onChanged()方法既不要求观察者调用,也不响应。

但是,如果我在上面的行中发表评论,我就能获得响应并能够显示到UI。因此对于null使用@Expose检查和空白值即时通讯,但它不起作用。

这是API调用

void getInspirationDetails() {
    inspirationDetailsModel.getInspirationDetails().observe(InspirationUploadDetailsActivity.this, new Observer<MainInspirationDetailsResponse>() {
        @Override
        public void onChanged(MainInspirationDetailsResponse mainInspirationDetailsResponse) {

            if (mainInspirationDetailsResponse != null) {
                if (mainInspirationDetailsResponse.getStatus().equalsIgnoreCase("0")) {
                    InspirationDetailData inspirationDetailData = mainInspirationDetailsResponse.getInspirationDetailData();
                    if (inspirationDetailData != null) {

                        Util.displayImage(InspirationUploadDetailsActivity.this, inspirationDetailData.getImage_file(), imgUploadedInsipration);

                        List<InspirationItemsData> inspirationItemsData = inspirationDetailData.getInspirationItemsData();
                        if (inspirationItemsData != null && inspirationItemsData.size() > 0) {

                            categoriesAdapter = new CategoriesAdapter(InspirationUploadDetailsActivity.this, inspirationItemsData);
                            rvCategories.setAdapter(categoriesAdapter);

                        }

                    }
                }
            }

        }
    });
}

高级帮助将不胜感激!

展开
收起
Puppet 2019-11-28 18:30:30 568 0
0 条回答
写回答
取消 提交回答
问答分类:
API
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载