Crates.io | jsonpath |
lib.rs | jsonpath |
version | 0.1.1 |
source | src |
created_at | 2017-12-28 23:49:38.556464 |
updated_at | 2018-04-01 12:06:52.272229 |
description | JSONPath for Rust |
homepage | https://github.com/greyblake/jsonpath-rs |
repository | https://github.com/greyblake/jsonpath-rs |
max_upload_size | |
id | 44766 |
size | 30,259 |
The library is in hard development stage.
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==
!=
>
<