Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.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 当使用restlet从Json获取对象时,如果Json改变了其结构,我如何获得不同的对象_Java_Android_Json_Class_Restlet 2.0 - Fatal编程技术网

Java 当使用restlet从Json获取对象时,如果Json改变了其结构,我如何获得不同的对象

Java 当使用restlet从Json获取对象时,如果Json改变了其结构,我如何获得不同的对象,java,android,json,class,restlet-2.0,Java,Android,Json,Class,Restlet 2.0,我有一个具有某种层次结构的Json,在某种程度上它的结构可能会发生变化。键OnOff可以有一个对象或数组,它可以有如下数组: "OnOff": [ { "state": { "last_update": 1401855332, "value": "off" } } ]

我有一个具有某种层次结构的Json,在某种程度上它的结构可能会发生变化。键OnOff可以有一个对象或数组,它可以有如下数组:

"OnOff": [
              {
            "state": {
                     "last_update": 1401855332,
                     "value": "off"
                     }
              }
         ]
   "OnOff":
           {
          "state": {
                   "last_update": 1401855332,
                   "value": "off"
                   }
           }
或者它只能有一个对象,如下所示:

"OnOff": [
              {
            "state": {
                     "last_update": 1401855332,
                     "value": "off"
                     }
              }
         ]
   "OnOff":
           {
          "state": {
                   "last_update": 1401855332,
                   "value": "off"
                   }
           }
其想法是读取json并使用Restlet for android将其转换为对象。我使用的是对象和接口,数组案例中的类定义如下:

public class Capability {
    public List<Processor> OnOff;// or Processor[]
    public Capability(){}
}
public class Capability {
    public Processor OnOff;
    public Capability(){}
}
加上检索对象的接口和代码

两个定义中的任何一个都适用于其中一个JSON,但不适用于另一个JSON。有没有一种方法可以声明一个包装器或可以同时充当数组或对象的东西?有没有其他方法可以使用restlet读取对象,比如使用贴图


注意:我真的不想手动解析任何东西

您可以调用资源#toObject(表示,Target1.class | Target2.class)来尝试转换为这两个类

但这并不清楚为什么您可以简单地依赖第二个功能类,它可以处理单个和多个项目。也许你不能控制服务器

另一个选项是添加Jackson注释、一个基本抽象功能类和两个子类

刚刚看到文档,应该可以使用,但我不知道如何://将Java类名(“com.myempl.ImplClass”)包含为JSON属性“class”