我使用JAXB
和JSONProvider
类在我的REST服务中生成对客户端的响应。我发现了一件有趣的事情。
我有映射:
@XmlRootElement(name = "fooRoot")
@XmlAccessorType(XmlAccessType.FIELD)
public class WSBar {
private WSFooTO foos;
//...
}
@XmlRootElement(name = "foos")
@XmlAccessorType(XmlAccessType.FIELD)
public class WSFooTO {
private WSDateTO one;
private WSDateTO two;
private WSDateTO three;
private WSDateTO four;
//....
}
当我设置为响应空对象时,我的意思是:只有new WSDateTO()
和new WSFooTO ()
之后,我回答这样的答案:
{"fooRoot":{
"foos":{
"one":"",
"two":"",
"three":"",
"four":""
}
}}
为什么会这样?我希望,它应该是:“one”:null,“two”:null
答案 0 :(得分:1)
根据JAXB tutorial,缺少值可以用三种不同的方式表达:
@XmlElement(required = true)
注释xsi:nil
注释@XmlElement(nillable = true)
属性
严格回答你的问题:JAXB不支持将空对象翻译为null
。