[java] Gson 라이브러리에서 다른 객체를 참조하는 방법은?
예를 들어, 다음과 같은 자바 클래스가 있다고 가정해봅시다.
public class User {
private String name;
private int age;
private Address address;
// getter, setter, constructor 생략
}
public class Address {
private String street;
private String city;
// getter, setter, constructor 생략
}
User 클래스는 Address 클래스를 참조하고 있습니다. 이를 Gson으로 직렬화 및 역직렬화하려면 다음과 같이 할 수 있습니다.
public static void main(String[] args) {
// 객체 생성
Address address = new Address();
address.setStreet("1234 Main St");
address.setCity("San Francisco");
User user = new User();
user.setName("John Doe");
user.setAge(25);
user.setAddress(address);
// 객체를 JSON으로 변환
Gson gson = new Gson();
String json = gson.toJson(user);
System.out.println(json);
// JSON을 객체로 변환
User deserializedUser = gson.fromJson(json, User.class);
System.out.println(deserializedUser.getName());
System.out.println(deserializedUser.getAge());
System.out.println(deserializedUser.getAddress().getStreet());
System.out.println(deserializedUser.getAddress().getCity());
}
위의 코드에서는 User 객체를 JSON 문자열로 직렬화하고, 다시 해당 JSON 문자열을 User 객체로 역직렬화하는 방법을 보여줍니다. User 객체의 address 속성이 Address 객체를 참조하고 있으므로, Gson은 해당 참조되는 Address 객체도 직렬화 및 역직렬화합니다.
이와 같이 Gson을 사용하여 객체를 직렬화하고 역직렬화할 때, 객체 내부에서 다른 객체를 참조하고 있다면 Gson은 알아서 처리하여 JSON 데이터에 포함시키거나 이를 객체로 변환합니다.