Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用不确定元素建模json数据_Java_Android_Json_Model - Fatal编程技术网

Java 使用不确定元素建模json数据

Java 使用不确定元素建模json数据,java,android,json,model,Java,Android,Json,Model,假设我有一个json响应(见图),其中包含一个元素“meta_data”。现在这个元数据列表的特殊之处在于它可能存在,也可能不存在,这取决于它是否有子元素。不仅如此,如果它只有一个子元素,那么它将显示为对象(键值),而不是列表。因此,如何在模型类中对该元素建模,以使我的应用程序不会因出现错误而崩溃,例如“应为字符串,但在第1行第4864列路径$[0]。元数据[0]。值处为BEGIN_对象”。下面是我的模特班的斯奈普: public class ProductModel { privat

假设我有一个json响应(见图),其中包含一个元素“meta_data”。现在这个元数据列表的特殊之处在于它可能存在,也可能不存在,这取决于它是否有子元素。不仅如此,如果它只有一个子元素,那么它将显示为对象(键值),而不是列表。因此,如何在模型类中对该元素建模,以使我的应用程序不会因出现错误而崩溃,例如“应为字符串,但在第1行第4864列路径$[0]。元数据[0]。值处为BEGIN_对象”。下面是我的模特班的斯奈普:

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

    }
公共类产品模型{
私有列表元数据=null;
公共列表getMetaData(){
返回元数据;
}
公共元数据(列出元数据){
this.meta_data=meta_data;
}
//更多元素
}

您可以使用以下代码

 public class ProductModel {

        private Object meta_data = null;
        ...
    }
并根据您使用instanceof关键字收到的响应进行强制转换,如

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

您必须检查(jsonresponse.has(“meta_data”){//parse meta data}否则{//catch your error}我应该在哪里检查这个条件,在模型类中可能的解决方案是:当您在Java类中解析数据时,使用这个条件。您可以使用私有的“Object meta_data=null;”而不是私有的“List meta_data=null;”并使用“instanceOf”强制转换它关键字输入列表或基于响应的对象。