定义为JSON接口的字段的JAXB / Moxy编组

时间:2018-08-09 09:35:13

标签: java json jaxb moxy

我正在开发一个将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变得非常困难,因为应该创建哪个具体实现来接收值?

我正在寻找遇到类似问题以及您最终如何解决此问题的人。

0 个答案:

没有答案