当前位置: 首页 > 知识库问答 >
问题:

防止Jackson中字符串到整数的自动转换

羊舌新荣
2023-03-14

我有一个简单的POJO:

public class ADate {
    private Integer day;
    private Integer month;
    private Integer year;
    ... // getters/setters/constructor
}

以下JSON文档被正确反序列化为adate:

{ 
  "day":"10", 
  "month":"2", 
  "year":"1972"
}

Jackson会自动将字符串转换为整数。

如果整数值被定义为字符串,是否有一种方法可以避免这种自动转换并使Jackson失败。

共有1个答案

花欣然
2023-03-14

ObjectMapper上有一个配置设置,称为MapperFeature.Allow_Coercion_of_Scalars。如果设置为false,它将阻止ObjectMapper将数字和布尔的字符串表示形式强制到它们的Java对应形式中。只允许严格转换。

确切用法示例:

objectMapper.configure(MapperFeature.ALLOW_COERCION_OF_SCALARS, false);

参考资料:

[2]如果deserializationFeature,则防止将int从空字符串强制为null。fail_on_null_for_primitivestrue#1095:https://github.com/fasterxml/jackson-databind/issues/1095

[3]ALLOW_COERCION_OF_SCALARS http://fasterxml.github.io/jackson-databind/javadoc/2.9/

 类似资料:
  • 我有一个非常基本的Spring Boot应用程序,具有。-data-jpa、.-data-rest和。-web依赖项。在我的模型中,有一个实体,它包含一个整数属性。当我用REST调用获取资源时,会出现以下异常: .W.S.M.S.DefaultHandlerExceptionResolver:未能写入HTTP消息:org.springframework.HTTP.converter.HttpMes

  • 我是Jooq的新手。我想把字符串转换成整数。 表1中定义:- 表2中定义:- 在select query中。 因为city_id在Table1和TABLE2中的格式不同。所以它需要转换table2的city_id,从字符串到整数,反之亦然,我尝试了Integer.valueOf(),我nteger.parseInt(),不工作。 感谢您的帮助。提前谢谢。

  • 问题内容: 我对MySQL并不陌生,但是今天巧合的是,我的代码中发生了一种奇怪的情况,这使我感到惊讶。有人可以解释为什么这给我相同的结果吗? 和 在这两种情况下,选择相同的记录都会得到相同的结果。我希望第二个人不会给我任何回报?我的ID字段是int(11)无符号的,并且auto_increment标志处于打开状态。 问题答案: 从MySQL文档: 当运算符与不同类型的操作数一起使用时,会发生类型转

  • 如何防止或捕捉用户输入int或数字的字符串? 前任。 然后如果我输入Dave Har1234,我想在输入上捕获该数字,然后返回。

  • 我正在制作一个模拟制表方法(Quine McCluskey)的程序,并试图将字符串格式的输入转换为整数格式,最后再转换为字符串(二进制格式)格式。 编辑:我忘了包括这个方法…

  • 问题内容: 我试图在Java中放置一些反SQL注入,并发现使用“ replaceAll”字符串函数非常困难。最后,我需要,将转换现有的功能来,任何到,任何到,任何以使得当字符串由MySQL的SQL注入评估将被阻止。 我已经整理了一些正在使用的代码,并且该函数中的所有内容都使我大失所望。如果有人碰巧有这个例子,我将不胜感激。 问题答案: PreparedStatement是可行的方法,因为它们使SQ