2014-02-12 53 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這對我想象中的大文件會更好。

只要解析器遇到某些事情,流式示例就會通過並引發事件。就像當它遇到一個布爾值時,它引發一個事件,它發現了一個布爾值,並給出了布爾值。但是,我不知道什麼鍵或布爾屬於的對象。同樣,地圖關閉事件發生。我可以在那裏做什麼?地圖封閉了,很棒。我有這個yajl_gen指針,我不知道如何處理它。道歉,如果這個問題是模糊的,或者我只是不太瞭解yajl解析。謝謝閱讀。

回答

0

基本上,你創建你的回調,每一個事件,然後在這些回調可以逐步建立數據結構的層次結構,幷包含在JSON數據流填充。 Map開始/結束構成一個JSON對象。大多數情況下,這兩個事件之間的任何事情都是一個關聯數組(鍵/值對)。關鍵字是一個字符串,它由地圖鍵事件標記。該值可以是字符串,數字,布爾值,數組(開始/結束數組事件)或甚至另一個對象(開始/結束地圖)。等等,等等。每一個都由相應的事件標記,例如開始/結束數組事件,字符串事件,數字事件或布爾事件。隨着JSON數據流的處理,事件逐漸逐漸顯現,並允許您構建您可能需要的任何層次的數據結構。

+0

[yajl_test.c](https://github.com/lloyd/yajl/blob/master/test/parsing/yajl_test.c)是更好的例子,因爲它使用自定義的背景下,回調函數的第一個參數。 –

相關問題