1

我玩 yajl 已经有几天了,非常喜欢树节点模型。解析完成后,您将获得 json 文件的结构,您可以浏览它。就像这里的例子:

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 解析不够了解。谢谢阅读。

4

1 回答 1

0

基本上,您为每个事件创建回调,然后在这些回调中,您可以逐步构建数据结构的层次结构,并用 JSON 流中包含的数据填充它们。地图开始/结束构成一个 JSON 对象。大多数时候,这两个事件之间的任何东西都是一个关联数组(键/值对)。键是一个字符串,它由映射键事件标记。该值可以是字符串、数字、布尔值、数组(开始/结束数组事件),甚至是另一个对象(开始/结束映射)。以此类推。其中每一个都由相应的事件标记,例如开始/结束数组事件、字符串事件、数字事件或布尔事件。随着 JSON 流的处理,事件会逐渐发生,并允许您构建您可能想要的任何层次结构的数据结构。

于 2014-05-08T21:33:44.797 回答