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}