小编Fra*_*ans的帖子

如何自定义 Jackson ObjectMapper 以在 Spring Boot 2.0 中允许 NaN?

将其从GitHub移至此处,因为 Spring 团队仅使用 GitHub 问题来处理错误和功能请求。

根据 Spring Boot文档,只要您没有定义自己的bean ,就应该可以ObjectMapper使用环境属性(例如在 中application.properties)来自定义 Jackson 。spring.jackson.parser.<feature_name>ObjectMapper

我需要激活ALLOW_NON_NUMERIC_NUMBERS解析器功能,因为我正在获取(严格来说无效)JSON NaN,其中包含我希望 Jackson 在 Java 中映射到的浮点字段的值java.lang.Double.NaN

所以在我的application.properties添加中spring.jackson.parser.ALLOW_NON_NUMERIC_NUMBERS=true,我可以看到它正在被拾取:

  • Spring BootJacksonAutoConfiguration正在创建一个Jackson2ObjectMapperBuilder
  • Jackson2ObjectMapperBuilder正在 StandardJackson2ObjectMapperBuilderCustomizer拾取我的spring.jackson.parser.ALLOW_NON_NUMERIC_NUMBERS=true财产并将其添加到其features地图中
  • Jackson2ObjectMapperBuilderbuild()方法最终会被调用configureFeature,这会导致特征 (512) 的掩码值ALLOW_NON_NUMERIC_NUMBERS被添加_parserFeaturesJsonFactoryObjectMapper
  • ObjectMapper在我的 bean 中注入的使用也@Autowired启用了该ALLOW_NON_NUMERIC_NUMBERS功能

NaN不清楚的是为什么我在解析具有浮点字段值的 JSON 时仍然收到以下 Jackson 错误:JSON decoding …

jackson spring-boot

2
推荐指数
1
解决办法
3134
查看次数

标签 统计

jackson ×1

spring-boot ×1