YAJL (Yet Another JSON Library) binding for Node.js
YAJL is a low-level sax-like JSON parser developed and maintained by Lloyd Hilaiel.
Node-yajl provides a glue that brings YAJL into Node.js ecosystem. Main feature of this project is a stream JSON parser allowing you to parse data without explicitly delimitting data stream into valid-value chunks.
Node-yajl is forked from yajl-js originally developed by Nikhil Marathe and seems to be no longer maintained.
Synopsis
var yajl = ; var h = ;h; h;h;h;h;h;h;h;h;h;h; var data = '{"some"' ':["JSON' '"],"data' '":[-3.5]}'; for var i in data h; h;
Build & install
Easy mode:
npm install yajl
Build and install manually:
node-waf configure build
node ./test.js
npm install .
Note that this package requires C++ building environment and 'libyajl' at least of version 2 and its dev headers to be installed on target system.
See yajl homepage for details about building and installing 'libyajl'.
API
yajl.Handle(opts)
Handle
object constructor.
Class Handle
itself is a subclass of events.EventEmitter
.
Optional argument opts
can be passed to constructor.
When opts
is ommited or null
, these defaults are used:
allowComments : false dontValidateStrings : false allowTrailingGarbage : false allowMultipleValues : false allowPartialValues : false
handle.parse(string)
Parse a data chunk possibly raising number of events.
handle.parseComplete()
Parse any ramaining buffered data.
Because of yajl
's stream nature it can't sometimes determine when the recently
parsed data contains a valid JSON value or there need more data (e.g. when parsing numeric values).
So it's a good idea to call this method every time you reach the end of data stream.
handle.getBytesConsumed()
Get the amount of data consumed from the last chunk passed to handle
.
In the case of a successful parse this can help you understand if the entire buffer was consumed or not.
Events
- 'startMap'
- 'endMap'
- 'startArray'
- 'endArray'
- 'mapKey'
- 'null'
- 'boolean'
- 'integer'
- 'double'
- 'number'
- 'string'
License
Modified BSD Lincense. See 'LICENSE' file for details.