繁体   English   中英

从带有Restlet的Json获取对象时,如何在Json更改其结构的情况下获取不同的对象

[英]when geting objects from a Json with restlet how can I get different objects in case the Json chnges its structure

我有一个具有一定层次结构的Json,在某些时候可以更改其结构。 关键OnOff可以有一个对象或一个数组,它可以有一个这样的数组:

"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(){}
}

加上接口和代码以检索对象。

两种定义中的任何一种均适用,而另一种则不适用。 有没有办法声明包装器或可以同时充当数组或对象的东西? 有没有其他方法可以读取带有restlet的对象,例如使用地图?

注意:我真的不想手动解析任何内容...

您可以调用Resource#toObject(representation,Target1.class | Target2.class)尝试转换为两个类。

但这并不清楚为什么您可以仅依靠第二个Capability类来处理单个和多个项目。 也许您不控制服务器?

另一个选择是添加Jackson注释,一个基本的Capability类和两个子类https://github.com/FasterXML/jackson-annotations

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM