[java] Gson 라이브러리에서 숫자 형식을 다루는 방법은?

Gson은 기본적으로 숫자를 자바의 기본 타입으로 처리합니다. 예를 들어, JSON에서 숫자가 “123”으로 표시되면 Gson은 이를 자바의 int형으로 변환합니다. 하지만 때로는 숫자를 다른 형식으로 처리해야 할 때가 있습니다.

먼저, Gson에서 숫자 형식을 다루는 방법은 GsonBuilder를 사용하여 Gson 인스턴스를 구성하는 것입니다. GsonBuilder를 사용하면 Gson 인스턴스를 커스터마이즈할 수 있습니다.

예를 들어, JSON 데이터의 숫자를 문자열로 처리하려면 GsonBuilder를 사용하여 다음과 같이 Gson 인스턴스를 만들어야 합니다.

Gson gson = new GsonBuilder().setLenient().setPrettyPrinting().serializeNulls().setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ").setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).setVersion(1.0).registerTypeAdapter(Number.class, new JsonSerializer<Number>() {
    @Override
    public JsonElement serialize(Number src, Type typeOfSrc, JsonSerializationContext context) {
        return new JsonPrimitive(String.valueOf(src));
    }
}).create();

위의 예제에서는 registerTypeAdapter 메서드를 사용하여 Number 클래스에 대한 직렬화 작업을 커스터마이즈합니다. JsonSerializer 인터페이스를 구현하여 serialize 메서드를 재정의합니다. 이 메서드에서는 숫자를 문자열로 변환하여 JsonPrimitive 객체로 반환합니다.

위의 코드에서는 다양한 컨버팅 옵션을 확인할 수 있는데, 필요한 옵션들을 추가하거나 제거하여 Gson 인스턴스를 원하는대로 구성할 수 있습니다.

이제 Gson을 사용하여 숫자를 원하는 방식으로 다룰 수 있습니다. 이를 통해 숫자 형식을 사용자가 지정하는 방법을 구현할 수 있습니다.