3

我使用JAXBJSONProvider类在我的 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

4

1 回答 1

2

根据 JAXB教程,值的缺失可以用三种不同的方式表示:

  • 该元素被省略
  • 使用@XmlElement(required = true)注释的空字符串
  • 使用注释的特殊xsi:nil属性@XmlElement(nillable = true)

严格回答您的问题:JAXB 不支持将空对象转换为null.

于 2012-06-27T10:38:11.807 回答