2 个版本
使用旧的 Rust 2015
0.1.1 | 2018 年 4 月 1 日 |
---|---|
0.1.0 | 2017 年 12 月 28 日 |
#2106 在 解析器实现
13,864 每月下载量
在 7 crates 中使用
31KB
776 代码行
适用于 Rust 的 JSONPath
该库处于开发阶段。
示例
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"]);
}
路线图
- 运算符
-
$
- 根元素 -
.<name>
- 命名子元素 -
*
- 通用(任何子项) -
[<number>]
- 数组中的索引元素 -
[<start>:<end>]
- 切片 -
[:<end>]
- 切片(到) -
[<start>:]
- 切片(从)
-
- 实用的测试辅助工具
- 良好的集成测试覆盖率
- 基准测试
- 重构
- 改进错误消息
- 审查 unwraps
- 审查公共 API(将 Selector 重命名为 Path ?)
- 发布新版本
- 可变迭代器
- 支持过滤器
-
[?(<expression>)]
- 过滤表达式。表达式必须评估为布尔值。 -
@
- 当前元素 - 运算符
==
- 运算符
!=
- 运算符
>
- 运算符
<
-
许可证
贡献者
- greyblake Sergey Potapov - 创建者,维护者。
- MarcAntoine-Arnaud Marc-Antoine ARNAUD - 过滤器支持
依赖项
~7.5MB
~151K SLoC