PropertyNamingStrategy.SNAKE_CASE 或 PropertyNamingStrategy.SnakeCaseStrategy 的替代方案,因为它现已弃用

Par*_*ngh 11 java spring jackson spring-boot jackson-databind

在 Jackson 的早期版本中,我们在对象的序列化和反序列化期间使用以下两种方法来修改属性命名。

第一种方法:在类级别提及以下注释。

@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
Run Code Online (Sandbox Code Playgroud)

第二种方法:在对象映射器本身中设置 PropertyNamingStrategy。

objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SnakeCaseStrategy.class);

or,

objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
Run Code Online (Sandbox Code Playgroud)

现在它已从 2.13 版本起被弃用。

参考: https: //fasterxml.github.io/jackson-databind/javadoc/2.13/com/fasterxml/jackson/databind/PropertyNamingStrategy.html

https://github.com/FasterXML/jackson-databind/issues/2715

现在有什么替代方案可以替代上述事情。

谁能帮我解决这个问题吗?

正在尝试上述两种方式,但现在显示已弃用。

小智 16

老的:

@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy::class)
Run Code Online (Sandbox Code Playgroud)

至新:

@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy::class)
-- or 
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
Run Code Online (Sandbox Code Playgroud)


小智 8

ObjectMapper mapper = new ObjectMapper();

mapper.setPropertyNamingStrategy(new PropertyNamingStrategies.SnakeCaseStrategy());
Run Code Online (Sandbox Code Playgroud)

就是这样。


sin*_*air 1

笔记!自 2.12 起,由于 databind#2715,此处定义的子类(及其静态单例实例)已被弃用。请改用 PropertyNamingStrategies 中的常量和类。

https://fasterxml.github.io/jackson-databind/javadoc/2.13/com/fasterxml/jackson/databind/PropertyNamingStrategies.html