1个不稳定版本

0.3.0 2020年4月29日

#2412数据库接口

Download history 95/week @ 2024-03-13 125/week @ 2024-03-20 89/week @ 2024-03-27 248/week @ 2024-04-03 128/week @ 2024-04-10 86/week @ 2024-04-17 163/week @ 2024-04-24 55/week @ 2024-05-01 46/week @ 2024-05-08 64/week @ 2024-05-15 65/week @ 2024-05-22 68/week @ 2024-05-29 263/week @ 2024-06-05 517/week @ 2024-06-12 597/week @ 2024-06-19 196/week @ 2024-06-26

1,589 每月下载量
3 crates 中使用

MIT 许可证

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