Вы можете различать ключи и значения только по порядку последовательности событий.
Когда Reader
(парсер SAX) встречает объект JSON, он вызывает StartObject()
обработчика. Затем будет последовательность пар ключ-значение. Ключ должен быть вызовом String()
, но значение может быть любым типом значения JSON. И, наконец, вызывает EndObject()
.
Итак, вам нужно следить за состоянием парсинга. Для простой структуры просто нужно перечисление для представления текущего состояния. Для рекурсивной структуры вам может понадобиться собственный стек.
В этого раздела показан пример преобразования простого объекта в пользовательскую структуру данных. И он должен обрабатывать 3 состояния. Или вы можете использовать счетчик для количества вызовов String()
и использовать нечетные/четные значения, чтобы определить, является ли это ключом или значением.
Иногда использование SAX API может быть более сложным. С другой стороны, он обеспечивает лучшую производительность и меньшую нагрузку на память.
Обновление: 2014/9/5
Запрос на вытягивание, который добавляет событие Key()
в дополнение к String()
, был объединен. Новый интерфейс должен упростить написание пользовательских обработчиков.
person
Milo Yip
schedule
17.07.2014