В API, с которым я работаю, я получаю определенную часть как простой массив JSON вместо пары normal = = value. Это глупо, но с этим мне приходится иметь дело.Карта JSONArray по объекту
Пример:
{"build":29625,"list": [
[312218505,1000,624437010,21997878697,35228,0,0,0],
[186873474,0,0,0,0,-1,0,0]
...
]}
Проблема становится Google GSON для отображения каждой позиции массива на поле в нормальном объекте. Поскольку неудивительно, что для этого не существует какой-либо поддержки, мне пришлось сворачивать свое собственное решение: каждый «запрос», который нуждается в преобразовании, реализует интерфейс CustomConvert, который имеет методы convertToObjects()
и convertToJson()
. Каждая «запись» имеет кучу полей с аннотацией @ArrayPosition(number)
. Методы преобразования переводят между двумя списками.
Как это уродливо, есть ли лучший способ сделать это с помощью Google GSON или даже другой библиотеки JSON для Java?
Erm, написать сериализатор/десериализатор gson? Можете ли вы привести пример JSON, который вы получаете? –
@Brian См. Править. И TMK с сериализатором/десериализатором он испортил бы что-нибудь еще, что возвращает JSONArray. – TheLQ
. Вы не пишете ни одного для списка/массива - вы пишете один для объекта, который содержит поле 'build' и поле« List » , Передайте список параметров конструктору 'MyObject', чтобы создать экземпляр каждого из них и добавить его в« Список ». (Я предполагаю, что каждый внутренний массив в вашем массиве JSON представляет один и тот же тип объекта) –