본문 바로가기

개발노트/SPRING

Gson 직렬화 시 Null object field 처리

Gson은 JSON 의 자바 오브젝트의 직렬화, 역질렬화를 해주는 오픈 소스 자바 라이브러리 입니다.

 

Gson 사용 시 유의해야할 점이 있는데,

그중 하나가 null object 필드가 무시 된다는 점입니다.

 

하기와 같이 

s 는 null , i 는 5 값을 가지는 Foo 객체를 gson.toJson(foo) 를 통해 Json 형태로 직렬화를 해보면

null 값이 무시되는 점을 확인 할 수 있습니다.

public class Foo {
  private final String s;
  private final int i;

  public Foo() {
    this(null, 5);
  }

  public Foo(String s, int i) {
    this.s = s;
    this.i = i;
  }
}
Gson gson = new Gson();
Foo foo = new Foo();
String json = gson.toJson(foo);
System.out.println(json);
======== OUTPUT ========
{"i":5}

따라서 값이 null 이여도 표시를 하기 위해서는 

GsonBuilder 클래스를 사용하여 serializeNulls() 옵션을 사용하여 처리 할 수 있습니다.

 

Gson gson = new GsonBuilder()
               .serializeNulls()
               .create();
Foo foo = new Foo();
String json = gson.toJson(foo);
System.out.println(json);
======== OUTPUT ========
{"s":null,"i":5}

'개발노트 > SPRING' 카테고리의 다른 글

JAVA 예외(Exception) 과 예외 처리  (0) 2020.03.13