Gson ігнорує записи на карті зі значенням = null


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 - Підтримка Null Object :

Поведінка за замовчуванням, реалізована в Gson, полягає в тому, що нульові об'єктні поля ігноруються. Це дозволяє отримати більш компактний вихідний формат; однак клієнт повинен визначити значення за замовчуванням для цих полів, оскільки формат JSON перетворюється назад у його форму Java.

Ось як би ви налаштували екземпляр Gson для виведення нуля:

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

10
Посібник має бути більш оптимізованим для пошуку. Я не збираюсь читати все, коли використовую невелику кількість подвигів. Це був перший результат в Google. Виправлено мою проблему.
Mathijs Segers

1
@MathijsSegers Деякі фантастичні бібліотеки не мають документації. Виникає стільки проблем, переглядаючи їх вихідний код (що знову ж таки з безліччю моделей будівельника і все).
pinkpanther

13
@MathijsSegers І в цьому красу SO та Google. Я можу google "gson ignore null" і знайти цю відповідь за 3 секунди, замість того, щоб знайти в ній посібник та відповідь.
joshden

2
Як включити лише одне поле NULL не всі поля NULL всередині класу? Чи є Анотація, яку я можу додати над необхідним полем?
Салам-Ель-Банна

це рішення здається розумним, і я очікував, що він спрацює! але це не так! якісь ідеї?
Арман Рамезанзаде
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.