Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用c yajl进行流式处理_C_Json_Parsing_Yajl - Fatal编程技术网

如何使用c yajl进行流式处理

如何使用c yajl进行流式处理,c,json,parsing,yajl,C,Json,Parsing,Yajl,我已经和yajl玩了几天,非常喜欢树节点模型。解析完成后,您将获得json文件的结构,然后可以查看它。就像这里的例子: 这个例子很好理解,但是我想知道如何使用这里展示的流媒体例子。我想这对于大文件会更好 当解析器遇到某些事情时,流式处理示例将遍历并引发事件。就像当它遇到一个布尔值时,它会引发一个事件,它发现了一个布尔值,并且给了我这个布尔值。但是,我不知道布尔值属于哪个键或对象。同样,映射关闭事件也会发生。我能在那里做什么?地图关闭了,太好了。我有一个yajl_gen指针,我不知道该怎么办。如

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

这个例子很好理解,但是我想知道如何使用这里展示的流媒体例子。我想这对于大文件会更好


当解析器遇到某些事情时,流式处理示例将遍历并引发事件。就像当它遇到一个布尔值时,它会引发一个事件,它发现了一个布尔值,并且给了我这个布尔值。但是,我不知道布尔值属于哪个键或对象。同样,映射关闭事件也会发生。我能在那里做什么?地图关闭了,太好了。我有一个yajl_gen指针,我不知道该怎么办。如果这个问题含糊不清,或者我对yajl解析了解不够,请道歉。谢谢你的阅读

基本上,您为每个事件创建回调,然后在这些回调中,您可以逐步构建数据结构的层次结构,并用JSON流中包含的数据填充它们。映射开始/结束组成一个JSON对象。大多数情况下,这两个事件之间的任何内容都是关联数组(键/值对)。键是一个字符串,由映射键事件标记。该值可以是字符串、数字、布尔值、数组(开始/结束数组事件),甚至是另一个对象(开始/结束映射)。等等等等。每个事件都由相应的事件标记,例如开始/结束数组事件、字符串事件、数字事件或布尔事件。随着JSON流的处理,事件一个接一个地逐渐出现,并允许您构建所需的任何数据结构层次结构。

是一个更好的示例,因为它使用了自定义上下文,即回调函数的第一个参数。