有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

包装器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) 个答案