我正在开发一个将POJO封送为JSON格式的程序。我使用Moxy进行此操作,并且一切正常-除非通过其已实现的接口之一引用字段。
例如:
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
public String name;
public Address address;
public ICustomerRelation relation;
}
这里有一个Customer类,其中包含一个简单的“名称”字段,一个“ Address”类和一个由接口引用的“关系”。
名称字段被毫无问题地整理为诸如“ John Smith”之类的名称。
地址字段也可以毫无问题地编组为"address: { street: "Streetname" }"
之类的东西。注意:“地址”字段当然也用@XmlAccessorType(XmlAccessType.FIELD)
注释。
但是将“关系”字段编组为好像没有任何字段或属性一样。例如:“关系:{}”。
我尝试用ICustomerRelation
注释@XmlAccessorType(XmlAccessType.FIELD)
接口,希望此注释可以继承到具体的实现类,但Java不支持。
我尝试用ICustomerRelation
注释@XmlAccessorType(XmlAccessType.FIELD)
的具体实现,但这也没有效果。我怀疑Moxy正在查看声明的类型,而不是具体的实现。
我尝试用@XmlAnyElement
注释关系字段,然后导致错误,说明“类(具体类)没有根元素”。用@XmlName(name="x")
注释具体的类似乎无法解决问题。
也许对此没有好的解决方案。我知道,对接口进行编组将使解组最终的JSON变得非常困难,因为应该创建哪个具体实现来接收值?
我正在寻找遇到类似问题以及您最终如何解决此问题的人。