java - 如何在 Spring boot 中将带有前导零的整数绑定(bind)到请求负载中的整数字段?

标签 java json spring-boot jackson jax-rs

我有如下所示的有效负载。

{
    "name": "XXXX",
    "expMonth": 07,
    "expYear": 21
}

我的请求正文 POJO 如下所示。

public Class Card {
     private String name;
     private Integer expMonth;
     private Integer expYear;
}

但是,expMonth 未正确绑定(bind)并引发异常。请提出前进的方向。

异常堆栈:

org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Invalid numeric value: Leading zeroes not allowed; nested exception is com.fasterxml.jackson.core.JsonParseException: Invalid numeric value: Leading zeroes not allowed at [Source: (PushbackInputStream); line: 4, column: 16]

最佳答案

However, expMonth is not binding properly and throws an exception.

根据异常堆栈,您有前导零,因此 Jackson 抛出了异常。您可以尝试类似的方法,

{
    "name": "XXXX",
    "expMonth": 7,    <--- Removing the leading zero(s).
    "expYear": 21
}

另一种方法是将其更改为 String,

{
    "name": "XXXX",
    "expMonth": "07",
    "expYear": 21
}

代码:

public Class Card {
     private String name;
     private String expMonth;
     private Integer expYear;
}

然后你可以做类似的事情,

Integer.parseInt(expMonth);

关于java - 如何在 Spring boot 中将带有前导零的整数绑定(bind)到请求负载中的整数字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56759680/

相关文章:

json - 'oneof' protobuf 字段的预期 JSON 序列化是什么?

java - Java中如何检查JsonNode是单个元素还是数组?

java - Spring Boot 数据源数据库连接配置不起作用

java - 从 URL 解析 JSON

java - 解析子串?

javascript - 在 React 中将字符串转换为日期

javascript - 如何确定 json 对象数组中特定字段的最大值?

java - 在 Spring Boot 应用程序的应用程序属性文件中使用 Jenkins 变量

java - 在 spring security 中保护两个或更多/** url

java - for 循环条件中的不等于与不等式 - 在 Java 中