[java] Gson 라이브러리의 커스텀 애너테이션 사용 방법은?

Gson은 JSON 데이터를 자바 객체로 변환하거나 자바 객체를 JSON 데이터로 변환하기 위한 유용한 라이브러리입니다. Gson은 기본적으로 자바 객체의 필드 이름과 JSON 데이터의 키 이름을 매핑하여 변환하도록 동작합니다. 하지만 때로는 필드와 키 이름이 서로 다를 경우에 대비하여 커스텀 애너테이션을 사용할 수 있습니다.

커스텀 애너테이션을 사용하여 Gson이 자바 객체를 JSON 데이터로 변환할 때 필드와 키 이름을 정확히 지정할 수 있습니다. 아래는 Gson 커스텀 애너테이션을 사용하는 방법입니다.

  1. 애너테이션 정의
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.FIELD)
    public @interface JsonKey {
        String value();
    }
    
  2. 애너테이션 적용
    public class Person {
        @JsonKey("name")
        private String fullName;
           
        @JsonKey("age")
        private int age;
           
        // Getters and Setters
    }
    
  3. Gson 사용
    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    
    public class Main {
        public static void main(String[] args) {
            Person person = new Person();
            person.setFullName("John Doe");
            person.setAge(30);
    
            Gson gson = new GsonBuilder().create();
            String json = gson.toJson(person);
            System.out.println(json);
        }
    }
    

    출력 결과:

    {"name":"John Doe","age":30}
    

위와 같이 @JsonKey 애너테이션을 사용하면 Gson이 자바 객체를 JSON 데이터로 변환할 때 필드와 키 이름을 지정할 수 있습니다. 그렇게 함으로써 JSON 데이터와 자바 객체 간의 매핑을 더욱 정확하게 제어할 수 있습니다.

더 많은 Gson 기능과 사용법은 Gson GitHub 저장소 (https://github.com/google/gson)에서 확인할 수 있습니다.