dye*_*yes 4 java spring jackson spring-boot
我在Spring上使用Jackson。我有几种这样的方法:
@RequestMapping(value = "/myURL", method = RequestMethod.GET)
public @ResponseBody Foo getFoo() {
// get foo
return foo;
}
Run Code Online (Sandbox Code Playgroud)
序列化的Foo类很大,并且有很多成员。使用注释或自定义序列化程序可以进行序列化。
我唯一不知道的是如何定义命名约定。我想对所有序列化使用snake_case。
那么,如何为全局定义序列化的命名约定?
如果不可能的话,则必须采用本地解决方案。
不确定如何全局执行此操作,但是这是在JSON对象级别而不是针对每个单独属性执行此操作的方法:
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
public class Foo {
private String myBeanName;
//...
}
Run Code Online (Sandbox Code Playgroud)
将产生json:
{
"my_bean_name": "Sth"
//...
}
Run Code Online (Sandbox Code Playgroud)
其实,有一个非常简单的答案:
@Bean
public Jackson2ObjectMapperBuilder jacksonBuilder() {
Jackson2ObjectMapperBuilder b = new Jackson2ObjectMapperBuilder();
b.propertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
return b;
}
Run Code Online (Sandbox Code Playgroud)
我将它添加到我的主要内容中,如下所示:
@SpringBootApplication
public class Application {
public static void main(String [] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public Jackson2ObjectMapperBuilder jacksonBuilder() {
Jackson2ObjectMapperBuilder b = new Jackson2ObjectMapperBuilder();
b.propertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
return b;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4920 次 |
| 最近记录: |