2014-03-19 7 views
2

У меня есть две строки JSON с тем же форматом из разных источников, но у одного есть камешка, у одного есть snakecase, как я могу сопоставить их с тем же полем POJO, используя Jackson? Например:Сопоставление двух разных имен полей JSON с одним свойством POJO

{ "fieldName": "abcd"} 

и

{ "field_name": "abcd"} 

ответ

2

Вы должны создать два метода инкубационных:

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

Вы можете использовать @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 будет аккуратным и чистым (без дубликатов полей) и создание кода отделяется хорошо.

Смежные вопросы