我有两个来自不同来源的相同格式的JSON
字符串,但其中一个有camelcase,一个有snakecase,如何使用POJO
将它们映射到同一个Jackson
字段?
例如:
{ "fieldName": "abcd"}
和
{ "field_name": "abcd"}
答案 0 :(得分:3)
您应该创建两个setter方法:
class Entity {
private String fieldName;
public String getFieldName() {
return fieldName;
}
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
public void setField_name(String field_name) {
this.fieldName = field_name;
}
}
答案 1 :(得分:1)
您可以使用@JsonCreator
注释指定如何构建对象。
@JsonIgnoreProperties(ignoreUnknown = true)
public class MyPojo {
private final String fieldName;
// Jackson version
@JsonCreator
public static MyPojo of(
@JsonProperty("field_name") final String fieldName1,
@JsonProperty("fieldName") final String fieldName2) {
final String name = fieldName1 != null ? fieldName1 : fieldName2;
return of(name);
}
// Programmatic version that you can use from code
public static MyPojo of(
@JsonProperty("fieldName") final String fieldName) {
return new MyPojo(fieldName);
}
private MyPojo(final String fieldName) {
this.fieldName = fieldName;
}
public String fieldName() {
return fieldName;
}
}
您的 POJO 将整洁干净(没有重复的字段),并且创建代码很好地分开。