如何配置Spring以使用@RequestBody批注将JSON反序列化为BigDecimal

时间:2019-06-03 14:30:29

标签: java json spring spring-boot deserialization

当我发布到端点“ / test”时,我的BigDecimals为空。

我要发布的有效载荷:

{
  "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 个答案:

答案 0 :(得分:1)

您需要将设置器添加到MyObject,因为使用MyObject()反序列化器创建对象后,没有合法的方式来设置字段。