값이 null 인 맵 항목을 무시하는 Gson


132
Gson gson = new Gson();

Map<String,Object> map = new HashMap<String, Object>();
map.put("a", 1);
map.put("b", null);

System.out.println(gson.toJson(map)); //prints {"a":1}

모든 항목을 포함 시키려면 어떻게해야합니까?

답변:


299

Gson 사용자 안내서-널 오브젝트 지원을 참조하십시오 .

Gson에서 구현되는 기본 동작은 null 개체 필드가 ​​무시되는 것입니다. 보다 컴팩트 한 출력 형식이 가능합니다. 그러나 JSON 형식이 다시 Java 형식으로 변환되므로 클라이언트는 이러한 필드의 기본값을 정의해야합니다.

null을 출력하도록 Gson 인스턴스를 구성하는 방법은 다음과 같습니다.

Gson gson = new GsonBuilder().serializeNulls().create();

10
매뉴얼은 검색에보다 최적화되어야합니다. 나는 소량의 위업을 사용할 때 모든 것을 읽지 않을 것입니다. 이것은 구글의 첫 번째 결과였습니다. 내 문제를 해결했습니다.
Mathijs Segers

1
@MathijsSegers 환상적인 라이브러리 중 일부는 문서가 없습니다. 소스 코드를 처리하는 데 많은 어려움을 겪었습니다 (다시 많은 빌더 패턴이 있습니다).
pinkpanther

13
@MathijsSegers 그리고 이것은 SO와 Google의 아름다움입니다. 나는 구글 "gson ignore null"을 찾을 수 있으며 매뉴얼과 답변을 찾지 않고도 3 초 안에이 답변을 찾을 수 있습니다.
joshden

2
클래스 내에 모든 NULL 필드가 아닌 하나의 NULL 필드를 포함시키는 방법은 무엇입니까? 필수 입력란 위에 추가 할 수있는 주석이 있습니까?
살람 엘 반나

이 솔루션은 합리적으로 보이며 작동 할 것으로 예상했습니다! 그러나 그렇지 않습니다! 어떤 아이디어?
Arman Ramezanzadeh의
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.