Jackson 从字符串/纯数字格式解析 Double

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。

谢谢

Dee*_*and 5

正如 @dpr 所提到的,提到的错误是由 Jackson 依赖项中的不兼容版本(2.13.x 与 2.14)引起的。修复方法是更正版本(对各种依赖项保持相同jackson-core,jackson-databind,即等),并且它适用于字符串和数字格式,这是默认行为。