@jsonproperty转下划线
时间: 2023-11-11 19:04:12 浏览: 120
为什么rest接口返回json建议采用下划线形式,不要用驼峰
如果你正在使用 Java 并且想要将一个使用 @JsonProperty 注解的属性名称转换为下划线格式,可以使用 Jackson 库提供的 PropertyNamingStrategy 来实现。
首先,需要创建一个自定义的 PropertyNamingStrategy 类来实现转换逻辑。例如,以下是一个将驼峰式命名转换为下划线命名的简单实现:
```
public class SnakeCaseStrategy extends PropertyNamingStrategy.PropertyNamingStrategyBase {
@Override
public String translate(String propertyName) {
if (propertyName == null) {
return propertyName;
}
StringBuilder result = new StringBuilder();
for (int i = 0; i < propertyName.length(); i++) {
char ch = propertyName.charAt(i);
if (Character.isUpperCase(ch)) {
result.append("_").append(Character.toLowerCase(ch));
} else {
result.append(ch);
}
}
return result.toString();
}
}
```
然后,在你的 Java 类中,可以通过在 ObjectMapper 对象上设置该策略来实现转换:
```
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setPropertyNamingStrategy(new SnakeCaseStrategy());
```
现在,当 Jackson 序列化或反序列化一个使用 @JsonProperty 注解的属性时,该属性名称将被转换为下划线格式。例如:
```
public class Example {
@JsonProperty("firstName")
private String firstName;
@JsonProperty("lastName")
private String lastName;
// getters and setters
}
Example example = new Example();
example.setFirstName("John");
example.setLastName("Doe");
String json = objectMapper.writeValueAsString(example);
// Output: {"first_name":"John","last_name":"Doe"}
Example example2 = objectMapper.readValue(json, Example.class);
System.out.println(example2.getFirstName()); // Output: John
System.out.println(example2.getLastName()); // Output: Doe
```
阅读全文