我有一个如下的有效载荷。
{
"name": "XXXX",
"expMonth": 07,
"expYear": 21
}
我的请求Body POJO如下所示。
public Class Card {
private String name;
private Integer expMonth;
private Integer expYear;
}
但是,expMonth
未正确绑定并引发异常。请提出前进的方向。
异常堆栈:
组织。springframework。http。转换器。HttpMessageEndableException:JSON解析错误:无效数值:不允许前导零;嵌套的异常是com。fasterxml。杰克逊。果心JsonParseException:无效数值:在[Source:(PushbackInputStream);第4行,第16列]不允许前导零
但是,expMonth没有正确绑定并抛出异常。
根据异常堆栈,您有前导零,因此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);
问题内容: 给定以下示例: 输出为: 为什么? 问题答案: 这是因为前导零的整数文字是八进制整数(以8为底):
问题内容: 我有下面的代码 和输出是 我期望输出如下。 当我打印直接int值时,为什么会给出?我期望Java自动将值从零开始转换为八进制。 和之间是什么关系? 问题答案: 前导0表示一个八进制数(以8为底)。 01111(八进制)是1 * 8 ^ 3 + 1 * 8 ^ 2 + 1 * 8 ^ 1 + 1 * 8 ^ 0 = 585(十进制) 将十进制数字1111转换为八进制字符串。八进制2127
问题内容: 我可以用math.round舍入到小数位数的x位数,但是有没有办法舍入到小数点的左边?例如,如果我指定2个位置,则5变为05 问题答案: 您是否要求零填充?不是真正的舍入。您必须将其转换为字符串,因为数字对于前导零没有意义。像这样 或者,如果您知道您永远不会使用X个以上的零,那么可能会更好。这假设您永远不要超过10位数字。 如果您关心负数,则必须去除“-”并读取它。
问题内容: 有没有更好的方法来获得此结果?如果num的位数比位数多,则此函数将失败,并且我认为它应该在库中的某个位置(例如Integer.toString(x,“%3d”)等) 问题答案: tring.format(http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html#syntax) 在你的情况下,它将是: 0 - to
如何在java中找到负整数的最大有效数?我有以下代码,可以很好地处理正整数。这是代码: 现在,我可以通过将变量max减少到-5或低于-4来解决这个问题,但这是低效的,因为我们不知道最小值。 那么,如何实现呢?
问题内容: 尝试这个: 因为什么时候40 = 32? 问题答案: 带有前导零的数字将解释为八进制和。