[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 데이터에 포함시키거나 이를 객체로 변환합니다.