Я пытаюсь проанализировать данные json с помощью gson-библиотеки Google. Но данные json не ведут себя хорошо.Пустой объект json вместо null, когда нет данных -> как десериализовать с помощью gson
Это выглядит так, когда все в порядке:
{
"parent": {
"child_one": "some String",
"child_two": "4711",
...
}
}
child_one
должен быть разобрано как String
, child_two
в int
. Но иногда один из детей не имеет значения, что приводит к пустому объекту вместо null
, как это:
{
"parent": {
"child_one": "some String",
"child_two": {},
...
}
}
я не имею доступа изменять подачу JSon, поэтому мне приходится иметь дело с ним во время десериализации. Но я здесь потерялся. Если я просто позволю ему разобрать, то второй случай даст мне JsonSyntaxException
.
Я думал об использовании пользовательского JsonDeserializer
. Сделайте что-нибудь вроде проверки каждого элемента, если это JsonObject
, и если да, проверьте, есть ли entrySet.isEmpty()
. Если да, удалите этот элемент. Но я не знаю, как выполнить итерацию ...
'null' все равно будет недействительным, так как OP должен разбираться с' int'. –
@Adassko Это была правильная идея. Я просто должен был сделать это с данными перед тем, как передать его: 'json.toString(). Replace (" {} "," null ");' – msal
@SotiriosDelimanolis 'null' в порядке, поскольку gson обрабатывает разбор. :) – msal