Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSONProvider返回空对象,例如字符串_Java_Json_Rest_Jaxb_Cxf - Fatal编程技术网

Java JSONProvider返回空对象,例如字符串

Java JSONProvider返回空对象,例如字符串,java,json,rest,jaxb,cxf,Java,Json,Rest,Jaxb,Cxf,我使用JAXB和JSONProvider类在REST服务中生成对客户端的响应。我发现了一件有趣的事。 我有地图: @XmlRootElement(name = "fooRoot") @XmlAccessorType(XmlAccessType.FIELD) public class WSBar { private WSFooTO foos; //... } @XmlRootElement(name = "foos") @XmlAccessorType(XmlAccessType.FI

我使用
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;
//....
}
当我设置为响应空对象时,我的意思是:只是
newwsdateto()
newwsfooto()
之后,我得到了如下回答:

{"fooRoot":{
    "foos":{
        "one":"",
        "two":"",
        "three":"",
        "four":""
    }
}}
为什么会这样?我希望它应该是:“一”:空,“二”:空

根据JAXB,没有值可以用三种不同的方式表示:

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

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

,请看这个问题,它也展示了一种转换空对象的方法。谢谢!但我认为,当对象转换为字符串时,这是错误的。Android客户端的JSON解析器不工作。因为它需要的是对象,而不是字符串。你能告诉我,在这种情况下我该怎么办?我不明白你想做什么。你问为什么会这样?我指出了为什么会这样。这就是JAXB的工作原理。你现在想做什么?请澄清你的问题。顺便说一句,
String
也是一个
对象
,所以你的Android客户端(如果有问题,你应该提供一些信息)应该可以工作。为了澄清,Andrew询问了Android用例。阿提库斯,谢谢你的回复。我不希望这些对象是空的,我已经尽我所能验证它们不是空的。然而,当我期望它们被填充时,它们却显示为空的。