Gson ignoruje wpisy mapy z wartością = null

134
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}

Jak sprawić, by obejmował wszystkie wpisy?

m2o
źródło

Odpowiedzi:

303

Zobacz Podręcznik użytkownika Gson - obsługa obiektów zerowych :

Domyślnym zachowaniem zaimplementowanym w Gson jest ignorowanie pól obiektów zerowych. Pozwala to na bardziej kompaktowy format wyjściowy; jednak klient musi zdefiniować wartość domyślną dla tych pól, ponieważ format JSON jest konwertowany z powrotem do jego postaci Java.

Oto, jak skonfigurować wystąpienie Gson, aby wyświetlało wartość null:

Gson gson = new GsonBuilder().serializeNulls().create();
Alois Cochard
źródło
10
Podręcznik powinien być bardziej zoptymalizowany pod kątem wyszukiwania. Nie mam zamiaru czytać wszystkiego, używając niewielkiej ilości wyczynów. To był pierwszy wynik w Google. Naprawiłem mój problem.
Mathijs Segers
1
@MathijsSegers Niektóre z fantastycznych bibliotek nie mają dokumentacji. Mając tyle problemów z przeglądaniem ich kodu źródłowego (co jest znowu z wieloma wzorcami budującymi i wszystkim innym).
pinkpanther
13
@MathijsSegers I to jest piękno SO i Google. Mogę wyszukać w Google „gson ignore null” i znaleźć tę odpowiedź w 3 sekundy, zamiast szukać instrukcji i odpowiedzi w niej.
joshden
2
Jak uwzględnić tylko jedno pole NULL, a nie wszystkie pola NULL w klasie? Czy istnieje adnotacja, którą mogę dodać powyżej wymaganego pola?
Salam El-Banna
to rozwiązanie wydaje się rozsądne i spodziewałem się, że zadziała! ale tak nie jest! jakieś pomysły?
Arman Ramezanzadeh