Jackson可以将JSON数据反序列化为不可变的对象。但是默认情况下,构造函数或静态工厂方法参数必须使用@JsonProperty或@ConstructorProperties指定。我如何配置Jackson和编译器,以便不需要这些注解?当使用Sping Boot 时,我如何最好地配置这些注解?
@JsonProperty
@ConstructorProperties
wsxa1bj11#
当序列化Java 17的记录时,不需要进一步的步骤,因为记录存储了它们的组件的名称。但是当序列化普通类时,需要三个配置:
-parameters
mapper.setConstructorDetector(USE_PROPERTIES_BASED)
在Sping Boot 中,前两个设置是默认的,因此不需要更改。第三个配置可以通过提供Jackson2ObjectMapperBuilderCustomizer bean来完成:
Jackson2ObjectMapperBuilderCustomizer
@Bean public Jackson2ObjectMapperBuilderCustomizer jacksonCustomizer() { return builder -> builder.postConfigurer(mapper -> mapper.setConstructorDetector(USE_PROPERTIES_BASED)); }
1条答案
按热度按时间wsxa1bj11#
当序列化Java 17的记录时,不需要进一步的步骤,因为记录存储了它们的组件的名称。但是当序列化普通类时,需要三个配置:
-parameters
标志进行编译。mapper.setConstructorDetector(USE_PROPERTIES_BASED)
。从Jackson 2.12开始支持此功能。在Sping Boot 中,前两个设置是默认的,因此不需要更改。第三个配置可以通过提供
Jackson2ObjectMapperBuilderCustomizer
bean来完成: