JSON event parser is a simple streaming JSON parser and serializer implementation in Rust.
It does not aim to be the fastest JSON parser possible but to be a simple implementation allowing to parse larger than memory files.
If you want fast and battle-tested code you might prefer to use json, serde_json or simd-json.
Parser example:
use json_event_parser::{ReaderJsonParser,JsonEvent};let json = b"{\"foo\": 1}";letmut reader = ReaderJsonParser::new(json.as_slice());assert_eq!(reader.parse_next()?,JsonEvent::StartObject);assert_eq!(reader.parse_next()?,JsonEvent::ObjectKey("foo".into()));assert_eq!(reader.parse_next()?,JsonEvent::Number("1".into()));assert_eq!(reader.parse_next()?,JsonEvent::EndObject);assert_eq!(reader.parse_next()?,JsonEvent::Eof);
# std::io::Result::Ok(())Serializer example:
use json_event_parser::{WriterJsonSerializer,JsonEvent};letmut writer = WriterJsonSerializer::new(Vec::new());
writer.write_event(JsonEvent::StartObject) ?;
writer.write_event(JsonEvent::ObjectKey("foo".into())) ?;
writer.write_event(JsonEvent::Number("1".into())) ?;
writer.write_event(JsonEvent::EndObject) ?;assert_eq!(writer.finish()?.as_slice(),b"{\"foo\":1}");
# std::io::Result::Ok(())This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or
<http://www.apache.org/licenses/LICENSE-2.0>) - MIT license (LICENSE-MIT or
<http://opensource.org/licenses/MIT>)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in json-event-parser by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.