jackson 序列化驼峰
时间: 2023-07-18 21:39:49 浏览: 175
在 Jackson 中,可以通过配置 `ObjectMapper` 来实现将 Java 对象的属性名从驼峰形式转换为下划线形式的命名方式,这个过程也称为“蛇形命名法”(Snake Case)。
可以通过添加 `PropertyNamingStrategy` 实现,例如,下面是一个将驼峰命名转换为下划线命名的策略示例:
```java
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
public class MyObject {
private String myProperty;
// getters and setters
}
```
在上面的示例中,`@JsonNaming` 注解指定了使用 `SnakeCaseStrategy` 策略,这会将属性名 `myProperty` 转换为 `my_property`。
如果需要自定义命名策略,只需要实现 `PropertyNamingStrategy` 接口即可。例如,下面是一个将驼峰命名转换为大写下划线命名的策略示例:
```java
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
public class UpperCaseSnakeCaseStrategy extends PropertyNamingStrategy.PropertyNamingStrategyBase {
@Override
public String translate(String input) {
if (input == null) {
return input;
}
StringBuilder result = new StringBuilder();
for (int i = 0; i < input.length(); i++) {
char ch = input.charAt(i);
if (Character.isUpperCase(ch)) {
result.append("_");
}
result.append(Character.toLowerCase(ch));
}
return result.toString().toUpperCase();
}
}
```
使用方式与上面类似:
```java
@JsonNaming(UpperCaseSnakeCaseStrategy.class)
public class MyObject {
private String myProperty;
// getters and setters
}
```
这个策略会将属性名 `myProperty` 转换为 `MY_PROPERTY`。
阅读全文