1 unstable release

0.1.0 Jan 22, 2019

#16 in #json-stream

MIT license

47KB
1K SLoC

qjsonrs

A Rust implementation of a JSON Tokenizer.

Warning

This crate is still very unstable, and probably going to have many breaking changes while in the 0.x.y versions.

Motivation

Streaming tokenization for handling large JSON payloads which can be processed without loading the whole JSON object into memory.

Iterator interface.

The steam of JsonTokens emitted by this crate unfortunately cannot quite provide the Iter interface. The reason is: the emitted JsonTokens refer to an internal buffer of the stream, and thus maintain a reference to the stream.

Also, the iterator returns Results, to enable reporting of IO or JSON encoding errors.

Example:

use qjsonrs::{
    JsonStream,
    JsonToken::JsBoolean
}

let mut stream = JsonStream::from_read(file)?;
while Some(t) = stream.next()? {
  match t {
    JsonToken::JsBoolean(b) => { println!("Got JSON boolean: {:?}", b) },
    o => { println!("Got other JSON token boolean: {:?}", o) },
  }
}
println!("Done reading stream.");

Dependencies

~570–800KB
~11K SLoC