Как автоматически обработать все большие десятичные поля в списке <object>с помощью весенней загрузки - PullRequest
0 голосов
/ 05 октября 2019

My Rest Api (при загрузке Spring) требуется автоматическое преобразование полей BigDecimal в список объектов с форматом тысячи.

Пример:

class EmployeeDTO {
     private String name;

     private BigDecimal salary; // 12345 --> need to 12,345
 }

@PostMapping(path = "/get-list-employee")
public ResponseEntity<Object> searchListEmployee(@RequestBody EmployeeDTO employeeDTO)
        throws JSONException {
    return new ResponseEntity<Object>(employeeService
            .searchListEmployee(employeeDTO).getBody(),
            HttpStatus.OK);
}

и необходимость возврата List, зарплата которого у каждого сотрудникаотформатировал.

Я нашел несколько способов форматирования, таких как использование PropertyEditorRegistrar или CustomNumberFormat, ...

, но, похоже, он не поддерживает объект списка.

Кто-нибудь покажет мнекак отформатировать все большие десятичные поля в списке объектов?

1 Ответ

1 голос
/ 05 октября 2019

Вы можете изменить метод получения salary в EmployeeDTO для возврата отформатированного значения. Например:

public String getSalary() {
    return NumberFormat.getCurrencyInstance().format(salary);
}

Будет возвращено отформатированное значение в соответствии с текущим значением по умолчанию JVM Locale, например: $12,345.00

Вы также можете изменить это, если предоставите пользовательский форматер. Например:

public String getSalary() {
    DecimalFormat df = new DecimalFormat("#,###.00");
    return df.format(salary);
}

Будет возвращено отформатированное значение, например: 12,345.00.

Вот как я это проверил:

List<EmployeeDTO> employees = new ArrayList<>();
employees.add(new EmployeeDTO("Emp1", BigDecimal.valueOf(12345)));
employees.add(new EmployeeDTO("Emp2", BigDecimal.valueOf(22134)));
employees.add(new EmployeeDTO("Emp3", BigDecimal.valueOf(44233)));

System.out.println(new ObjectMapper().writeValueAsString(employees)); // printing JSON

Выход:

[
  {
    "name": "Emp1",
    "salary": "$12,345.00"
  },
  {
    "name": "Emp2",
    "salary": "$22,134.00"
  },
  {
    "name": "Emp3",
    "salary": "$44,233.00"
  }
]
...