#json #android-studio #retrofit2
#json #android-studio #retrofit2
Вопрос:
Я должен запросить API, который по умолчанию возвращает объект, и есть раздел «подробнее», который может быть объектом или строкой, зависит от некоторых отправленных данных. Он предназначен для создания подобного, не созданного мной, конечно.
{
...
"list": {
...
"more": {
"header": {
"a": "..."
},
"request": {
...
}
}
}
}
Выше приведен типичный ответ, который я получаю от API, этот список more является объектом. Но иногда он возвращался, как показано ниже, хотя, конечно, это привело бы меня к ошибке.
{
...
"list": {
...
"more": "no data available"
}
}
Мне просто любопытно, возможно ли справиться с этим, поскольку модернизация немедленно выдает ошибку, если ответ не совсем такой, как POJO? или я могу использовать любой, чтобы сделать это возможным? поскольку, если я изменю POJO на String, это приведет меня к ошибке, если ответ будет объектом.
Давайте не будем забывать о том, как я запрашиваю ответ. Я мог бы это предоставить, но нужно ли это для этого вопроса? если это так, то спросите меня, я сделаю.
Изменить POJO на любой невозможно, поскольку Parcelize не поддерживает этот тип.
Редактировать
Поскольку возникает вопрос, какую ошибку я получу, я сделаю ее доступной для чтения здесь.
Если бы я установил его как строку, было бы нормально, если бы ответ был строкой, но если это объект, он вернется.
java.lang.Исключение IllegalStateException: Исключена строка, но она была BEGIN_OBJECT в строке 1 столбца 4363 $.list.more
и это было бы иначе, если бы я установил для него значение object, но он возвращал String
java.lang.Исключение IllegalStateException: исключен объект, но он был строкой в строке 1 столбца 4363 $.list.more
Комментарии:
1. какую ошибку вы получаете? С ответами api все в порядке, оба в порядке. Один pojo может обрабатывать оба ответа.
2. отредактированный вопрос для читаемой версии
3. вы знаете ошибку, она связана с анализом ответа. Вам необходимо обработать синтаксический анализ. И вы всегда получаете строку в ответ. Внесите изменения в свой pojo.
4. ах, вы правы.