3 个版本

0.0.3 2022 年 4 月 10 日
0.0.2 2022 年 4 月 6 日
0.0.1 2022 年 4 月 6 日

#2515 in 解析器实现

SSPL-1.0

64KB
1.5K SLoC

license GitHub issues Rust crates.io

jsonpath_rs

Forum Discord

一个用于 Rust 的 JSONPath 库。这个库背后的想法是,只要实现了 SelectValue 三元组,它就可以在任意 JSON 表示上运行。该库实现了对 serde_json valueivalue 的支持。

入门

将以下内容添加到您的 cargo.toml 中

[dependencies]
jsonpath_rs = { git = "https://github.com/RedisJSON/jsonpath_rs.git", branch = "master" }

使用示例

extern crate jsonpath_rs
#[macro_use] extern crate serde_json;

fn main() {
    let mut query = jsonpath_rs::compile("$..friends[0]");
    let path = jsonpath_rs::create(&query)

    let json_obj = json!({
        "school": {
            "friends": [
                {"name": "foo1", "age": 20},
                {"name": "foo2", "age": 20}
            ]
        },
        "friends": [
            {"name": "foo3", "age": 30},
            {"name": "foo4"}
        ]
    });

    let json = path.calc(&json_obj);

    assert_eq!(json, vec![
        &json!({"name": "foo3", "age": 30}),
        &json!({"name": "foo1", "age": 20})
    ]);
}

测试

jsonpath_rshttps://github.com/freestrings/jsonpath 上通过了几乎所有测试,要运行测试

cargo test

依赖项

~5MB
~97K SLoC