The library is in hard development stage.
```rust extern crate jsonpath; extern crate serde_json;
use jsonpath::Selector; use serde_json::Value;
fn main() { let jsondoc = r#" { "books": [ { "title": "Der schwarze Obelist", "author": "Erich Maria Remarque" }, { "title": "Le mur", "author": "Jean-Paul Sartre" } ] } "#;
// Parse JSON document
let json: Value = serde_json::from_str(jsondoc).unwrap();
// Create a JSONPath selector
let selector = Selector::new("$.books.*.title").unwrap();
// Apply the selector to the JSON and convert Vec<&Value> into Vec<&str>
let titles: Vec<&str> = selector.find(&json)
.map(|t| t.as_str().unwrap())
.collect();
assert_eq!(titles, vec!["Der schwarze Obelist", "Le mur"]);
} ```
$
- root element.<name>
- named child element*
- wildcard (any child item)[<number>]
- indexed element in array[<start>:<end>]
- slice[:<end>]
- slice (to)[<start>:]
- slice (from)[?(<expression>)]
- Filter expression. Expression must evaluate to a boolean value.@
- current element==
!=
>
<