java - 指定 Jackson 的字段命名策略

标签 java json jackson

我有关于使用 Jackson 将 bean 序列化/反序列化为 json 的问题。以前我使用 GSON 来做到这一点,但现在我面临一个已经依赖于 Jackson 的项目,如果我可以用手头已有的东西做的话,我宁愿不引入新的依赖项。

想象一下我有一个这样的 bean :

class ExampleBean {
   private String firstField;
   private String secondField;
   // respective getters and setters
}

然后 Jackson 将其序列化为:

{
   "firstField": "<first_field_value>",
   "secondField": "<second_field_value>"
}

我正在使用以下代码生成上述结果:

ExampleBean bean;
...
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(outStream, bean);

但是我希望(期望)获得以下序列化:

{
   "first_field": "<first_field_value>",
   "second_field": "<second_field_value>"
}

我特意简化了我的示例,但是我有很多要序列化的 bean 层次结构,我想指定序列化的属性应始终采用 snake_style(即带有下划线)并且相应的 bean 字段应始终是驼峰。有什么方法可以强制执行此类字段/属性命名策略并使用它们而无需为每个字段注释相应的属性?

最佳答案

是的,我找到了(事实证明,经过 2 小时的搜索,我距离找到它只有 30 分钟的路程):

ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(
    PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
mapper.writeValue(outStream, bean);

希望这对其他人也有帮助。

关于java - 指定 Jackson 的字段命名策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9533227/

相关文章:

java - 为什么使用 invokedynamic 调用 Java 8 lambda?

java - Java中读取txt文件

javascript - 我需要使用 AngularJS 从 JSON 文件创建 HTML 元素

java - jackson 无法使用最终字段反序列化最简单的对象

Java 10 var 和捕获变量

java - swt 无缝语言更改

android - 如何检查 JSON 数据是对象还是字符串?

json - 使用绝对或相对路径在 curl 请求中发送 json 文件

java - 如何用 jsoniter 将 spring boot 应用程序中的 jackson 替换为自动编码器和解码器

java - 使用 Jackson 将 json 嵌入节点作为值反序列化到 Map 中