Я пишу приложение для управления смартфонами Philips Hue, используя их REST API и библиотеку Square's Retrofit.Как использовать Retrofit для анализа ответа JSON, который использует уникальный идентификатор в качестве ключа?
Проблема заключается в том, когда я делаю вызов /lights
ответ приходит обратно, используя id
свойство каждого источника света в качестве ключа в ответ JSON (а не массив световых объектов, что характерно в ответ jsonapi, и что кажется Ожидается, что «Модернизация»).
Вот запрос/ответ Я смотрю на
GET /lights
возвращает
`` ` {
"1": {
"state": {
"on": true,
"bri": 144,
"hue": 13088,
"sat": 212,
"xy": [0.5128,0.4147],
"ct": 467,
"alert": "none",
"effect": "none",
"colormode": "xy",
"reachable": true
},
"type": "Extended color light",
"name": "Hue Lamp 1",
"modelid": "LCT001",
"swversion": "66009461",
"pointsymbol": {
"1": "none",
"2": "none",
"3": "none",
"4": "none",
"5": "none",
"6": "none",
"7": "none",
"8": "none"
}
},
"2": {
"state": {
"on": false,
"bri": 0,
"hue": 0,
"sat": 0,
"xy": [0,0],
"ct": 0,
"alert": "none",
"effect": "none",
"colormode": "hs",
"reachable": true
},
"type": "Extended color light",
"name": "Hue Lamp 2",
"modelid": "LCT001",
"swversion": "66009461",
"pointsymbol": {
"1": "none",
"2": "none",
"3": "none",
"4": "none",
"5": "none",
"6": "none",
"7": "none",
"8": "none"
}
}
} ` ``
Обратите внимание, как inste объявление возврата массива светлых объектов, оно возвращает каждый светлый объект, сбитый с его светового идентификатора.
У кого-нибудь есть идеи, как разобрать это с помощью Дооснащения?
Используете ли вы GSON или smething, как это? AFAIR GSON не может анализировать регулярные выражения для аннотированных полей, поэтому лучше всего использовать библиотеку Джексона для разбора и вручную преобразовать его в массив. – MightySeal