0,0 округлено 0 в упаковке - ApaceCXF REST - PullRequest
1 голос
/ 31 марта 2020

Мое приложение использует Apace CXF для предоставления API-интерфейсов REST и использует jackson для маршалинга и демаршаллинга. В одной из конечных точек мы возвращаем обертку, которая является Map. Отображение десятичных знаков имеет решающее значение для этого приложения.

@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 с десятичными точками на основе определенной конфигурации.

Я добавил тостринги и логгеры в соответствующих местах кода. Я мог видеть, что когда userDecimalFormat равен 1 или 2 или 3, я получаю желаемый результат, то есть счетчик равен 0,0, 0,00 или 0,000 соответственно, и то же самое печатается в журналах.

Но в тот момент, когда он конвертируется в формат json, я получаю желаемый результат только тогда, когда userDecimalFormat равен 2,3. Когда это 1, я получаю его как 0, а не как 0.0 в результирующем json. Вот фрагмент.

{
   "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"
               }
            }
         ]
      }
   }
}

Как вы предлагаете мне решить эту проблему?

...