java - JSONProvider 返回空对象,例如 String

标签 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":""
    }
}}

为什么会这样?我希望它应该是:“一”:空,“二”:空

最佳答案

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

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

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

关于java - JSONProvider 返回空对象,例如 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11224035/

相关文章:

javascript - 如何更新要点?

rest - SSLEngine 不解密所有数据

html - 在 Sinatra 请求之间共享 Ruby 变量

Java 应用程序运行速度比应有的慢

android - 在 django 服务器中使用 android 应用程序进行身份验证

json - select2 使用查询词过滤本地 JSON 数据结果

PHP/REST - 如何实现基于角色的 API 访问?

java - Docker:如何在 Debian jessie-slim 上安装 OpenJDK JRE 12?

java - 如何获取大于最大整数值的整数值

java - AJAX Post - 在 JSP 中执行,需要在 AJAX POST Success 函数中返回基于 java 的变量