我使用 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":""
}
}}
为什么会这样?我希望它应该是:“一”:空,“二”:空
最佳答案
根据 JAXB tutorial值的缺失可以用三种不同的方式表达:
- 元素被省略
- 使用
@XmlElement(required = true)
注释的空字符串 - 使用
@XmlElement(nillable = true)
注释的特殊xsi:nil
属性
严格回答您的问题:JAXB 不支持将空对象转换为 null
。
关于java - JSONProvider 返回空对象,例如 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11224035/