Crate json_scanner

Crate json_scanner 

Source
Expand description

A simple JSON parser that reports positions.

This is a pull-based, streaming parser. That means you create a Parser, and then repeatedly call Parser::next_event to request the next Event.

§Example

use json_scanner::{Parser, SpannedEvent, Event};

let mut parser = Parser::new(br#"{ "foo": "bar" }"#);
assert_eq!(
  parser.next_event().unwrap().unwrap(),
  SpannedEvent {
    start: 0,
    end: 1,
    event: Event::BeginObject,
  }
);

assert_eq!(
  parser.next_event().unwrap().unwrap(),
  SpannedEvent {
    start: 2,
    end: 7,
    event: Event::String("foo".into()),
  }
);

assert_eq!(
  parser.next_event().unwrap().unwrap(),
  SpannedEvent {
    start: 9,
    end: 14,
    event: Event::String("bar".into()),
  }
);

assert_eq!(
  parser.next_event().unwrap().unwrap(),
  SpannedEvent {
    start: 15,
    end: 16,
    event: Event::EndObject,
  }
);

Structs§

ParseError
A parse error and its location.
Parser
A simple JSON parser that delivers event streams in “pull” mode.
SpannedEvent
A JSON parsing event emitted by Parser::next_event, consisting of an Event and its source location.

Enums§

ErrorKind
All the different kinds of errors we can encounter when parsing JSON.
Event
The various different things that a JSON parser can encounter.