16 releases
0.9.1 | Mar 9, 2023 |
---|---|
0.9.0 | Dec 21, 2022 |
0.8.18 | Dec 19, 2022 |
0.8.14 | Nov 3, 2022 |
0.6.1 |
|
#197 in Data structures
1,155 downloads per month
Used in 26 crates
(7 directly)
160KB
5K
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
~4MB
~76K SLoC