Java Jackson 필드 이름 변경
1. 직렬화 필드명 변경
단순 엔터티 작업이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class MyDto {
private String stringValue;
public MyDto() {
super();
}
public String getStringValue() {
return stringValue;
}
public void setStringValue(String stringValue) {
this.stringValue = stringValue;
}
}
직렬화하면 다음 JSON이 생성된다.
1
{"stringValue":"some value"}
stringValue 대신에 strVal을 얻도록 해당 출력을 사용자 정의하려면 간단히 getter에 주석을 달아야 한다.
1
2
3
4
@JsonProperty("strVal")
public String getStringValue() {
return stringValue;
}
이제 직렬화 시 원하는 출력을 얻을 수 있다.
1
{"strVal":"some value"}
간단한 단위 테스트를 통해 출력이 올바른지 확인한다.
1
2
3
4
5
6
7
8
9
10
11
12
@Test
public void givenNameOfFieldIsChanged_whenSerializing_thenCorrect()
throws JsonParseException, IOException {
ObjectMapper mapper = new ObjectMapper();
MyDtoFieldNameChanged dtoObject = new MyDtoFieldNameChanged();
dtoObject.setStringValue("a");
String dtoAsString = mapper.writeValueAsString(dtoObject);
assertThat(dtoAsString, not(containsString("stringValue")));
assertThat(dtoAsString, containsString("strVal"));
}
[출처 및 참고]
This post is licensed under CC BY 4.0 by the author.