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用例。阿提库斯,谢谢你的回复。我不希望这些对象是空的,我已经尽我所能验证它们不是空的。然而,当我期望它们被填充时,它们却显示为空的。