Module rsonpath_lib::classify
source · Expand description
Classification of structurally significant JSON bytes.
Provides the Structural
struct and StructuralIterator
trait
that allow effectively iterating over structural characters in a JSON document.
A structural classifier needs ownership over a base QuoteClassifiedIterator
.
Examples
use rsonpath_lib::classify::{Structural, classify_structural_characters};
use aligners::{alignment, AlignedBytes};
let json = r#"{"x": [{"y": 42}, {}]}""#;
let aligned = AlignedBytes::<alignment::Twice<rsonpath_lib::BlockAlignment>>::new_padded(json.as_bytes());
let expected = vec![
Structural::Opening(0),
Structural::Colon(4),
Structural::Opening(6),
Structural::Opening(7),
Structural::Colon(11),
Structural::Closing(15),
Structural::Opening(18),
Structural::Closing(19),
Structural::Closing(20),
Structural::Closing(21)
];
let quote_classifier = rsonpath_lib::quotes::classify_quoted_sequences(&aligned);
let actual = classify_structural_characters(quote_classifier).collect::<Vec<Structural>>();
assert_eq!(expected, actual);
use rsonpath_lib::classify::{Structural, classify_structural_characters};
use aligners::{alignment, AlignedBytes};
let json = r#"{"x": "[\"\"]"}""#;
let aligned = AlignedBytes::<alignment::Twice<rsonpath_lib::BlockAlignment>>::new_padded(json.as_bytes());
let expected = vec![
Structural::Opening(0),
Structural::Colon(4),
Structural::Closing(14)
];
let quote_classifier = rsonpath_lib::quotes::classify_quoted_sequences(&aligned);
let actual = classify_structural_characters(quote_classifier).collect::<Vec<Structural>>();
assert_eq!(expected, actual);
Enums
Defines structural characters in JSON documents.
Traits
Trait for classifier iterators, i.e. finite iterators of
Structural
characters
that hold a reference to the JSON document valid for 'a
.Functions
Walk through the JSON document represented by
bytes
and iterate over all
occurrences of structural characters in it.Resume classification using a state retrieved from a previously
used classifier via the
stop
function.