35 releases
0.12.5 | Jul 3, 2024 |
---|---|
0.12.3 | Apr 2, 2024 |
0.12.2 | Feb 21, 2024 |
0.10.0 | Oct 19, 2023 |
0.6.1 |
|
#204 in Parser implementations
28,839 downloads per month
Used in 80 crates
(28 directly)
190KB
6K
SLoC
Strict JSON parsing and mapping library
This library provides a strict JSON parser as defined by
RFC 8259 and
ECMA-404.
It is built on the locspan
library
so as to keep track of the position of each JSON value in the parsed
document.
Features
- Strict implementation of RFC 8259 and ECMA-404.
- No stack overflow, your memory is the limit.
- Numbers are stored in lexical form thanks to the
json-number
crate, their precision is not limited. - Duplicate values are preserved. A JSON object is just a list of entries, in the order of definition.
- Strings are stored on the stack whenever possible, thanks to the
smallstr
crate. - The parser is configurable to accept documents that do not strictly adhere to the standard.
- Highly configurable printing methods.
- Macro to build any value statically.
- JSON Canonicalization Scheme implementation (RFC 8785)
enabled with the
canonicalization
feature. serde
support (by enabling theserde
feature).- Thoroughly tested.
Usage
use std::fs;
use json_syntax::{Value, Parse, Print};
let filename = "tests/inputs/y_structure_500_nested_arrays.json";
let input = fs::read_to_string(filename).unwrap();
let mut value = Value::parse_str(&input, |span| span).expect("parse error");
println!("value: {}", value.pretty_print());
License
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.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~0–1MB
~19K SLoC