JSONProvider返回空对象,如String

时间:2012-06-27 10:21:47

标签: java json rest jaxb cxf

我使用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

1 个答案:

答案 0 :(得分:1)

根据JAXB tutorial,缺少值可以用三种不同的方式表达:

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

严格回答你的问题:JAXB不支持将空对象翻译为null