[java] Gson 라이브러리의 추가적인 기능은?
  1. 어노테이션을 활용한 직렬화 및 역직렬화 Gson은 어노테이션을 사용하여 직렬화와 역직렬화를 커스터마이즈할 수 있습니다. @SerializedName 어노테이션을 사용하여 JSON 필드 이름과 자바 객체의 필드 이름을 매핑할 수 있습니다.

    public class Person {
        @SerializedName("name")
        private String fullName;
        private int age;
    
        // getters and setters
    }
    
  2. Null 값 처리 Gson은 JSON 데이터에서 null 값이 포함된 경우, 자동으로 객체의 필드를 null로 설정합니다. 또한, 객체를 JSON으로 변환할 때 null이 아닌 필드만을 포함하도록 설정할 수 있습니다.

    Gson gson = new GsonBuilder().serializeNulls().create();
    
  3. 날짜 형식 처리 Gson은 Java의 Date 및 Calendar 객체와 JSON 사이의 날짜 형식 변환도 지원합니다. DateFormat 클래스를 사용하여 날짜 형식을 커스터마이즈할 수 있습니다.

    Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
    
  4. 제외 및 인클루드 필드 설정 Gson은 특정 필드를 제외하거나, 특정 필드만을 직렬화 및 역직렬화하는 기능도 제공합니다. @Expose 어노테이션을 사용하여 필드의 직렬화 여부를 설정할 수 있습니다.

    public class Person {
        @Expose
        private String name;
           
        @Expose(serialize = false)
        private int age;
    
        // getters and setters
    }
    
  5. 커스텀 직렬화 및 역직렬화 Gson은 JsonSerializerJsonDeserializer 인터페이스를 구현하여 커스텀 직렬화와 역직렬화를 지원합니다. 이를 통해 복잡한 데이터 구조나 특수한 형식의 JSON 데이터를 처리할 수 있습니다.

    JsonSerializer<Date> dateSerializer = (src, typeOfSrc, context) -> {
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        return new JsonPrimitive(dateFormat.format(src));
    };
    
    Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, dateSerializer).create();
    

Gson은 JSON과 자바 객체 간의 간단하고 편리한 변환을 제공하는 만큼, 다양한 추가 기능도 지원합니다. 필요에 따라 Gson의 공식 문서를 참고하여 더 많은 기능을 활용할 수 있습니다.