Как настроить Spring для десериализации JSON в BigDecimal с помощью аннотации @RequestBody - PullRequest
0 голосов
/ 03 июня 2019

Мои BigDecimals равны нулю, когда я отправляю сообщение в конечную точку "/test".

Полезная нагрузка, которую я отправляю:

{
  "decimalOne": "230.0",
  "decimalTwo": "215.0"
}

Класс MyObject:

public class MyObject {
    private BigDecimal decimalOne;
    private BigDecimal decimalTwo;

    public MyObject() {
    }

    public MyObject(BigDecimal decimalOne, BigDecimal decimalTwo) {
        this.decimalOne = decimalOne;
        this.decimalTwo = decimalTwo;
    }

    BigDecimal getDecimalOne() {
        return decimalOne;
    }

    BigDecimal getDecimalTwo() {
        return decimalTwo;
    }
}

Контроллер:

@RestController
@RequestMapping("/test")
public class MyObjectController {

    private DecimalService decimalService;

    @Inject
    MyObjectController(DecimalService decimalService){
        this.decimalService = decimalService;
    }

    @PostMapping
    public Integer getNumberBack(@RequestBody MyObject myObjectPayload){
       return decimalService.getNumber(myObjectPayload);
    }
}

Как заставить Spring десериализовать JSON в BigDecimal.Также, пожалуйста, дайте мне знать, если я пропустил какую-либо информацию.Спасибо!

1 Ответ

1 голос
/ 03 июня 2019

Вам необходимо добавить сеттеры в MyObject, потому что после создания объекта с помощью десериализатора MyObject () не существует легального способа задания полей.

...