Docs.rs
  • json-syntax-0.5.2
    • json-syntax 0.5.2
    • Docs.rs crate page
    • MIT/Apache-2.0
    • Links
    • Repository
    • crates.io
    • Source
    • Owners
    • timothee-haudebourg
    • Dependencies
      • decoded-char ^0.1 normal
      • hashbrown ^0.12.1 normal
      • indexmap ^1.9.1 normal
      • json-number ^0.3.1 normal
      • locspan ^0.7.2 normal
      • locspan-derive ^0.5.1 normal
      • smallstr ^0.3 normal
      • smallvec ^1.9 normal
    • Versions
    • 44.02% of the crate is documented
  • This release has been yanked, go to latest version
  • Platform
    • i686-pc-windows-msvc
    • i686-unknown-linux-gnu
    • x86_64-apple-darwin
    • x86_64-pc-windows-msvc
    • x86_64-unknown-linux-gnu
  • Feature flags
  • docs.rs
    • About docs.rs
    • Privacy policy
  • Rust
    • Rust website
    • The Book
    • Standard Library API Reference
    • Rust by Example
    • The Cargo Guide
    • Clippy Documentation
logo

Crate json_syntax

logo

Crate json_syntax

  • Version 0.5.2
  • All Items
  • Re-exports
  • Modules
  • Macros
  • Structs
  • Enums
  • Constants
  • Traits
  • Type Definitions

Crates

  • json_syntax
logo
Change settings

Crate json_syntax

source · [−]
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

object
parse
print

Macros

json

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

Structs

Number

Lexical JSON number.

Unordered

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

Enums

Kind

Value kind.

Value

Value.

Constants

NUMBER_CAPACITY

Number buffer stack capacity.

SMALL_STRING_CAPACITY

String stack capacity.

Traits

BorrowUnordered
UnorderedEq
UnorderedHash
UnorderedPartialEq

Type Definitions

Array

Array.

NumberBuf

Number buffer.

String

String.

Loading search results...