jsonpath_rust

Macro jp_v

Source
macro_rules! jp_v {
    (&$v:expr) => { ... };
    (&$v:expr ; $s:expr) => { ... };
    ($(&$v:expr;$s:expr),+ $(,)?) => { ... };
    ($(&$v:expr),+ $(,)?) => { ... };
    ($v:expr) => { ... };
}
Expand description

just to create a json path value of data Example:

  • jp_v(&json) = JsonPathValue::Slice(&json)
  • jp_v(&json;"foo") = JsonPathValue::Slice(&json, "foo".to_string())
  • jp_v(&json,) = vec![JsonPathValue::Slice(&json)]
  • jp_v[&json1,&json1] = vec![JsonPathValue::Slice(&json1),JsonPathValue::Slice(&json2)]
  • jp_v(json) = JsonPathValue::NewValue(json)
use std::str::FromStr;
use serde_json::{json, Value};
use jsonpath_rust::{jp_v, JsonPathQuery, JsonPath, JsonPathValue};

fn test() -> Result<(), Box<dyn std::error::Error>> {
    let json: Value = serde_json::from_str("{}")?;
    let path = JsonPath::try_from("$..book[?(@.author size 10)].title")?;
    let v = path.find_slice(&json);

    let js = json!("Sayings of the Century");
    assert_eq!(v, jp_v![&js;"",]);
}