【问题标题】:Modelling json data with unsure element使用不确定元素建模 json 数据
【发布时间】:2019-03-04 06:59:30
【问题描述】:

假设我有一个带有元素“meta_data”的 json 响应(见图)。现在这个 meta_data 列表的特殊之处在于它可能存在也可能不存在,这取决于它是否有子元素。不仅如此,如果它只有一个子元素,那么它将显示为对象(键值),而不是列表。那么如何在我的模型类中对这个元素进行建模,这样我的应用程序就不会因“预期为字符串但在第 1 行第 4864 列路径 $[0].meta_data[0].value 处为 BEGIN_OBJECT”之类的错误而崩溃。以下是我的模型类的片段:

public class ProductModel {

    private List<MetaDatum> meta_data = null;


    public List<MetaDatum> getMetaData() {
        return meta_data;
    }

    public void setMetaData(List<MetaDatum> meta_data) {
        this.meta_data = meta_data;
    }

          // further more elements

    }

【问题讨论】:

  • 你必须检查 if(jsonRespons.has("meta_data")){// 解析元数据 }else{//catch your error}
  • 我应该在哪里检查这个条件,在模型类中
  • 在Java类中解析数据时,使用这个条件。
  • 你可以使用私有的“Object meta_data = null;”而不是私有的“List meta_data = null;”并根据响应使用“instanceOf”关键字将其转换为列表或对象。

标签: java android json model


【解决方案1】:

您可以使用以下代码

 public class ProductModel {

        private Object meta_data = null;
        ...
    }

并根据您使用 instanceof 关键字收到的响应进行投射,例如

if(response instanceof List){
   //iterate list.
}
if(response instanceof Object){
  //use object.
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 2021-10-06
    • 2015-03-29
    • 2020-10-10
    相关资源
    最近更新 更多