Introduction
This part of the book is a work in progress.
extern crate rsonpath; extern crate rsonpath_syntax; use rsonpath::engine::{Compiler, Engine, RsonpathEngine}; use rsonpath::input::BorrowedBytes; use rsonpath::result::count::CountRecorder; use std::error::Error; fn main() -> Result<(), Box<dyn Error>> { // Parse a JSONPath query from string. let query = rsonpath_syntax::parse("$..phoneNumbers[*].number")?; // Convert the contents to the Input type required by the Engines. let mut contents = r#" { "person": { "name": "John", "surname": "Doe", "phoneNumbers": [ { "type": "Home", "number": "111-222-333" }, { "type": "Work", "number": "123-456-789" } ] } } "#; let input = BorrowedBytes::new(contents.as_bytes()); // Compile the query. The engine can be reused to run the same query on different contents. let engine = RsonpathEngine::compile_query(&query)?; // Count the number of occurrences of elements satisfying the query. let count = engine.count(&input)?; assert_eq!(2, count); Ok(()) }