JAXBContext处理@XmlValue

时间:2013-04-05 19:08:08

标签: json jaxb eclipselink moxy

我在我的代码中遇到了这个问题:当除了声明为@XmlValue的字段之外的所有字段都为空时,MOXy将该字段编组为好像它是整个对象的唯一值。我意识到这可能是一个有目的的实现,但我想知道是否有任何解决方法。注意:我目前正在使用eclipselink moxy,但这似乎是所有jaxb绑定的标准

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class foo {
@XmlValue
private final String name;
@XmlAttribute(name = "name2", required = true)
private final String name2;
>....getters, setters, etc....<
public foo(String name, String name2) {
    this.name = name;
    this.name2 = name2;
    }
}

我正在运行

JAXBContext jc = JAXBContext.newInstance(moxyTest.foo.class);

    Marshaller marsh = jc.createMarshaller();

    marsh.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
    marsh.setProperty("eclipselink.media-type", "application/json");
    StringWriter strWriter = new StringWriter();
    foo example = new foo("blah", null);

    marsh.marshal(example, strWriter);

我希望我的输出是

{
   "foo" : {
       value: "blah"
    }
}

但是由于@XmlValue注释,它是

{
   "foo" : "blah"
}

1 个答案:

答案 0 :(得分:1)

<强>更新

此问题现已在EclipseLink 2.5.1和2.6.0流中得到修复。您可以从以下链接下载包含此修复程序的每晚构建 2013年8月8日


原始回答

我已针对此问题打开了以下错误。您可以使用它来跟踪我们的进度。