2013-04-05 41 views
2

我在我的代碼中遇到過這個問題:當除了聲明爲@XmlValue的字段之外的所有字段都爲null時,MOXy將字段封送出來,就好像它是整個對象的唯一值。我意識到這可能是一個有目的的實現,但我想知道是否有任何解決方法。注:我目前使用的EclipseLink MOXY,但是這似乎是所有JAXB綁定@XmlValue的JAXBContext處理

@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" 
} 

回答