Crate jsonpath [] [src]

JSONPath implementation for Rust.

The library is in development stage at the moment, but you can use already limited functionality.

Currently the following operators are supported:

  • $ - The root element. All path expression should start with it.
  • . - A direct child element.
  • .. - Any descendant element (aka deep child).

Example

extern crate jsonpath;
extern crate serde_json;

use jsonpath::Selector;
use serde_json::Value;

fn main() {
    let jsondoc = r#"
        {
            "favorites": {
               "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("$.favorites.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"]);
}

Structs

Selector