3 个版本
0.0.3 | 2022 年 4 月 10 日 |
---|---|
0.0.2 | 2022 年 4 月 6 日 |
0.0.1 | 2022 年 4 月 6 日 |
#2515 in 解析器实现
64KB
1.5K SLoC
jsonpath_rs
一个用于 Rust 的 JSONPath 库。这个库背后的想法是,只要实现了 SelectValue
三元组,它就可以在任意 JSON 表示上运行。该库实现了对 serde_json value 和 ivalue 的支持。
入门
将以下内容添加到您的 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_rs
在 https://github.com/freestrings/jsonpath 上通过了几乎所有测试,要运行测试
cargo test
依赖项
~5MB
~97K SLoC