包装器ApaceCXF REST中的java 0.0四舍五入为0
我的应用程序使用Apace CXF公开REST API,并使用jackson进行编组和解编。。在其中一个端点中,我们返回一个包装器,它是一个映射。显示小数点对这个应用程序至关重要
@XmlRootElement(name = "Output")
class Wrapper {
private Map<String, CountVO> data;
//constructor
//getter, setter
}
class CountVO {
private BigDecimal value;
//getter, setter, constructor
//updateMethod
public void updateValue(String userDecimalFormat){
switch(userDecimalFormat){
case "1":
this.value = BigDecimal.ZERO.setScale(1);
break;
case "2":
this.value = BigDecimal.ZERO.setScale(2);
break;
case "3":
this.value= BigDecimal.ZERO.setScale(3);
break;
}
}
}
在这里,默认值根据特定配置设置为0,并带有小数点
我在代码中的相关位置添加了tostring和Logger。我能看到的是,当userDecimalFormat为1、2或3时,我得到了所需的输出,即count分别设置为0.0、0.00或0.000,并在日志中打印出来
但是,在转换为json格式的那一刻,只有当userDecimalFormat为2,3时,我才能得到所需的输出。当它为1时,我得到的结果是0,而不是json中的0.0。以下是片段
{
"Output": {
"data": {
"entry": [
{
"key": "1",
"value": {
"count": 0
}
},
{
"key": "2",
"value": {
"count": 0
}
}
]
}
}
}
在其他情况下,情况如下
{
"Output": {
"data": {
"entry": [
{
"key": "1",
"value": {
"count": "0.00"
}
},
{
"key": "2",
"value": {
"count": "0.00"
}
}
]
}
}
}
你建议我如何解决这个问题
共 (0) 个答案