Expand description

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.
  • Thoroughly tested.

Usage

use std::fs;
use json_syntax::{Value, Parse, Print};
use decoded_char::DecodedChars;
use locspan::Meta;

fn infallible<T>(t: T) -> Result<T, std::convert::Infallible> {
  Ok(t)
}

let filename = "tests/inputs/y_structure_500_nested_arrays.json";
let input = fs::read_to_string(filename).unwrap();
let Meta(value, value_location) = Value::parse(filename, input.decoded_chars().map(infallible)).expect("parse error");
println!("value: {}", value.pretty_print());

Re-exports

pub use parse::Parse;
pub use print::Print;
pub use object::Object;

Modules

Macros

Constructs a Loc<json_syntax::Value, (), ()> from a JSON literal.

Structs

Lexical JSON number.

Wrapper to view a value without considering the order of the objects entries.

Enums

Constants

Number buffer stack capacity.

String stack capacity.

Traits

Type Definitions

Array.

Number buffer.

String.