json_parse/
lib.rs

1//! A low-level JSON parser with full spec support and a simple API.
2mod data;
3mod parser;
4mod scanner;
5mod tests;
6
7pub use data::{JsonElement, ParseError};
8
9/// Parses a JSON string into a [JsonElement], or returns a [ParseError].
10///
11/// ```
12/// use json_parse::{parse, JsonElement::*};
13///
14/// let json = "[1, true, null]";
15/// let parsed = parse(json).unwrap();
16///
17/// assert_eq!(parsed, Array(
18///    vec![Number(1.0), Boolean(true), Null]
19/// ));
20/// ```
21///
22/// ```
23/// use json_parse::{parse, ParseError};
24/// let bad_json = r#"
25///     {
26///         "one": 1,
27///         2: "two"
28///     }
29/// "#;
30/// let error = parse(bad_json).unwrap_err();
31///
32/// assert_eq!(error, ParseError{
33///     line: 4,
34///     column: 8,
35///     msg: "Expected string, found number (2)".into()
36/// });
37/// ```
38pub fn parse(json: impl AsRef<str>) -> Result<JsonElement, ParseError> {
39    parser::JsonParser::from(json.as_ref()).parse()
40}