Dee*_*and 4 java jackson spring-boot objectmapper jackson-databind
我有一个文件,可以说是这样的,它是装箱为本机类型或字符串的双值。
{ "field1" : 123.00 }
Run Code Online (Sandbox Code Playgroud)
或者
{"field1" : "123.00" }
Run Code Online (Sandbox Code Playgroud)
和相应的 Pojo:
class Response{
Double field1;
}
Run Code Online (Sandbox Code Playgroud)
现在,如果它是字符串格式,我会看到一个错误,如下所示:
Caused by: java.lang.NoSuchFieldError: USE_FAST_DOUBLE_PARSER
at com.fasterxml.jackson.databind.deser.std.NumberDeserializers$DoubleDeserializer._parseDouble(NumberDeserializers.java:755)
at com.fasterxml.jackson.databind.deser.std.NumberDeserializers$DoubleDeserializer.deserialize(NumberDeserializers.java:684)
Run Code Online (Sandbox Code Playgroud)
显然,同样的事情适用于 Int 或 long 对于字符串或纯数字。为什么 Double 会失败?
是否有任何注释可以使其适用于两种格式?或者解决从字符串解析的问题?
或者,它可以使用@Jsonsetter。
谢谢
正如 @dpr 所提到的,提到的错误是由 Jackson 依赖项中的不兼容版本(2.13.x 与 2.14)引起的。修复方法是更正版本(对各种依赖项保持相同jackson-core,jackson-databind,即等),并且它适用于字符串和数字格式,这是默认行为。
| 归档时间: |
|
| 查看次数: |
3253 次 |
| 最近记录: |