1个不稳定版本
0.3.0 | 2020年4月29日 |
---|
#2412 在 数据库接口
1,589 每月下载量
在 3 crates 中使用
165KB
4K SLoC
JMESPatCh for Rust
Rust实现JMESPath,JSON查询语言。
与Jmespath的区别(注意path不等于patch)
这个仓库的创建目的是为了为原始jmespath.rs库准备一个PR。
然而,经过几个月等待有人对我的PR进行评论,现在很清楚,jmespath.rs项目已经处于停滞状态。
因此,我被迫以 jmespatch 的名称在我的crates.io上发布了我的修复。
与原始代码相比,jmespatch
- 将代码升级到rust 2018版
- 将许多 .unwrap() 调用替换为返回Result的代码,以避免在serde_json无法序列化/反序列化时崩溃
- 修改了Variable::Number以使用serde_json::Number而不是f64,以模仿serde本身的行为。这允许在可能的情况下使用u64或i64而不是f64
- 修复了一个不允许使用jmespath.rs与serde_json 1.0.45或更高版本的问题
- 将项目结构重构成cargo工作区
- 修复了jmespath-cli中的一个失败测试
- 修复了所有clippy警告
- 更新了所有依赖项
- 修改了bench以在稳定版上运行(不再需要夜间编译器来运行cargo bench)
本项目状态
我将保留它,直到原始jmespath.rs项目有任何生命迹象。
我不会添加新功能,但每个提交的PR都热烈欢迎。
安装
此crate位于crates.io上,可以通过将jmespatch
添加到项目Cargo.toml
中的依赖项来使用。
[dependencies]
jmespatch = "0.3.0"
示例
extern crate jmespatch;
let expr = jmespatch::compile("foo.bar").unwrap();
// Parse some JSON data into a JMESPath variable
let json_str = r#"{"foo": {"bar": true}}"#;
let data = jmespatch::Variable::from_json(json_str).unwrap();
// Search the data with the compiled expression
let result = expr.search(data).unwrap();
assert_eq!(true, result.as_boolean().unwrap());
依赖项
~360–790KB
~17K SLoC