Json을 계층구조로 표시하지 않고 1depth로 flat하게 표시하는 방법이다.
하나의 예를 보자.
다음과 같이 User는 UserName을 속성으로 가지고 있다.
@AllArgsConstructor
@Getter
public class User implements JsonSerializable {
private String id;
private UserName userName;
public static void main(String[] args) {
User user = new User("rudaks94", new UserName("rudaks", "han"));
System.out.println(user);
}
@Override
public String toString() {
return JsonUtil.toJson(this);
}
}
@AllArgsConstructor
@Getter
public class UserName implements JsonSerializable {
private String firstName;
private String lastName;
@Override
public String toString() {
return toJson();
}
}
User를 실행하면 결과는 아래와 같다.
{
"id" : "rudaks94",
"userName" : {
"firstName" : "rudaks",
"lastName" : "han"
}
}
하지만 결과를 2depth가 아닌 아래와 같이 1depth로 표시하려면 어떻게 해야 할까?
{
"id" : ...,
"firstName" : ...,
"lastName" : ...
}
해당 필드에 @JsonUnwrapped
를 사용하면 된다.
@JsonUnwrapped
private UserName userName;
결과
{
"id" : "rudaks94",
"firstName" : "rudaks",
"lastName" : "han"
}
반응형