2014-02-12 4 views
1

Я играю с yajl в течение нескольких дней и очень люблю модель узла дерева. После того, как он будет обработан, вы получите структуру своего json-файла, и вы сможете пройти через него. Как пример здесь:Как использовать c yajl для потоковой передачи

http://lloyd.github.io/yajl/yajl-2.0.1/example_2parse_config_8c-example.html

Этот пример хорошо и легко понять, но я хотел бы знать, как использовать пример потокового который они показывают здесь. http://lloyd.github.io/yajl/yajl-2.0.1/reformatter_2json_reformat_8c-example.html Это было бы лучше для больших файлов, которые я себе представляю.

Пример потоковой передачи проходит и вызывает события всякий раз, когда парсер сталкивается с определенными вещами. Подобно тому, как он встречает логическое значение, он вызывает событие, которое обнаруживает логическое значение, и мне присваивается логическое значение. Тем не менее, я не знаю, какой ключ или объект принадлежит boolean. Аналогично, происходит событие закрытия карты. Что я могу сделать там? Карта закрыта, отлично. У меня есть этот указатель yajl_gen, и я не знаю, что с ним делать. Извиняюсь, если этот вопрос расплывчатый или я просто не знаю достаточно о yajl синтаксическом разборе. Спасибо за прочтение.

ответ

0

В принципе, вы создаете свои обратные вызовы для каждого события, а затем в этих обратных вызовах вы можете постепенно создавать иерархию структур данных и заполнять их данными, содержащимися в потоке JSON. Начало/конец карты составляют объект JSON. В большинстве случаев между этими двумя событиями есть ассоциативный массив (пары ключ/значение). Ключ - это строка, и она отмечена событием карты. Значение может быть строкой, числом, логическим, массивом (событие начала/конца массива) или даже другим объектом (карта начала/конца). Так и так, и так далее. Каждый из них отмечен соответствующим событием, таким как событие начала/конца массива, событие строки, числовое событие или логическое событие. События происходят один за другим, постепенно, по мере обработки потока JSON и позволяют создавать любую иерархию структур данных, которые могут вам понадобиться.

+0

[yajl_test.c] (https://github.com/lloyd/yajl/blob/master/test/parsing/yajl_test.c) является лучшим примером, поскольку он использует настраиваемый контекст, первый аргумент функций обратного вызова , –

Смежные вопросы