Вопрос в том, что когда я анализирую следующую JSON с использованием библиотеки GSON , я получаю GSON класс в виде POJO , где каждый ключ и значение имеют геттер и сеттер.
См. Пример такого плохого JSON ниже, как неправильно проанализированный GSON library
Теперь это не тот формат, который мне требуется.Вместо этого я хочу получить объект hashmap в ответ (библиотека может вернуть ArrayList, тогда почему не TreeHashMap?) .Для меня эта часть JSON не анализируется GSON, как я желаю.
Мой вопрос заключается в том, должен ли я попросить свою вспомогательную команду переформатировать JSON , как во второй JSON ниже или попытаться использовать библиотеку GSON как есть, но программно извлечь ее JSONObject
из JSON , где ключи являются динамическими по своей природе, и неясно, есть лиесть пара таких ключей или тысячи таких в JSON , который возвращается.
См. пример good JSON ниже, преобразованный из bad JSON, который я предоставил, поскольку он может быть легко проанализирован GSON в формат, который я желаю
Для этого я должен объяснитьПравило моей бэкэнд-команды:
ПРАВИЛО:
Ключи не должны быть динамическими по своей природе.Если в случае, если ключи являются динамическими, список доступных для поиска ключей также должен быть определен в том же JSON или в отдельной MODEL JSON , которую следует запрашивать при вызове до этого JSON анализируется (в отдельном ответе API веб-службы).
Пример плохого JSON:
{"Grocery": [
{
"id": 2,
"name": "Kirana Store",
"parent_id": 1,
"category_image": "",
"category_type": "product",
"position": 0,
"front_status": 0,
"slug_url": "daal-pulses",
"created_at": "2016-06-27 06:44:59",
"updated_at": "2018-02-13 04:55:33"
},
{
"id": 3,
"name": "Departmental Store",
"parent_id": 1,
"category_image": "",
"category_type": "product",
"position": 0,
"front_status": 0,
"slug_url": "dry-fruits",
"created_at": "2016-06-27 06:45:12",
"updated_at": "2018-02-13 04:56:01"
}
]}
, и может быть тысячи динамических ключейкак "Grocery
", например, "Stationary
", "Hosiery
", "Medicines
" и т. д. как категории товаров. GSON создаст геттеры для каждого такого динамического ключа.
Должен быть исправлен и возвращен API веб-службы следующим образом:
{
"Products": [
{
"parent_category": "Grocery",
"items": [
{
"id": 2,
"name": "Kirana Store",
"parent_id": 1,
"category_image": "",
"category_type": "product",
"position": 0,
"front_status": 0,
"slug_url": "daal-pulses",
"created_at": "2016-06-27 06:44:59",
"updated_at": "2018-02-13 04:55:33"
},
{
"id": 3,
"name": "Departmental Store",
"parent_id": 1,
"category_image": "",
"category_type": "product",
"position": 0,
"front_status": 0,
"slug_url": "dry-fruits",
"created_at": "2016-06-27 06:45:12",
"updated_at": "2018-02-13 04:56:01"
}
]
}
]
}
Гдемогут быть тысячи категорий как Grocery
, как описано выше, и получатели для таких ключей не могут быть вычислены во время выполнения.Но если эти ключи преобразуются в значения, представленные общим ключом каждое, как в приведенном выше исправлении, то иметь общий получатель для этого ключа "parent_category
" имеет смысл.Теперь это JSON , который GSON может анализировать для моего желаемого выхода.Но дело в том, что наша команда не сотрудничает, чтобы что-то изменить, потому что здесь есть переделки.Если я переключусь на традиционный синтаксический анализ, на моем конце также будет огромная переделка.
ИЛИ Я должен найти способ, которым я могу извлечь JSONObject
из JSON с использованием GSON , чтобы я мог разобрать его вручную.
Поэтому мне нужно что-то, чтобы сэкономить время, которое уйдет на эту переделку.