9 个版本 (5 个稳定版)
使用旧 Rust 2015
1.1.1 | 2021 年 4 月 13 日 |
---|---|
1.0.2 | 2021 年 2 月 9 日 |
1.0.1 | 2020 年 11 月 3 日 |
1.0.0 | 2020 年 6 月 29 日 |
0.6.0 | 2017 年 12 月 30 日 |
#287 in 编码
3,116 每月下载量
用于 21 个 crate (18 个直接使用)
27KB
639 行
Jsonxf
一个用 Rust 编写的 JSON 转换器。
提供快速美化打印和最小化 JSON 编码字符串和流,可在命令行或 Rust 程序内使用。
Jsonxf 旨在追求速度,不会尝试执行任何输入验证。有效输入产生有效输出,但不对检测和拒绝无效输入提供任何保证。
Crate 文档: https://docs.rs/jsonxf/
安装
cargo install jsonxf
命令行示例
将字符串美化打印到终端,使用两个空格缩进
jsonxf -s '{"a": {"b": 2, "c": false}}'
美化打印并读取 JSON 文件,使用制表符缩进
jsonxf -t $'\t' <foo.json | less
最小化文件并压缩它
jsonxf -m <foo.json | gzip -c >foo-min.json.gz
运行 jsonxf -h
以查看所有配置选项。
Rust 示例
在你的 Cargo.toml
[dependencies]
jsonxf = "1.1"
在你的代码中
extern crate jsonxf;
let ugly_json = "{\"hello\":\"world\"}";
let pretty_json = jsonxf::pretty_print(ugly_json).unwrap();
assert_eq!(pretty_json, "{\n \"hello\": \"world\"\n}\n");
性能
以下是一些基准测试,比较 Jsonxf 0.9 的性能与其几个竞争对手
- jq,一个极其灵活的 JSON 处理器。
- jsonpp,一个用 Go 编写的 JSON 美化打印器。
- serdexf,使用 serde_json 和 serde-transcode 库的一个简单示例。此实现并不完整,仅用于库比较。
cat
也被纳入比较,以供参考。
测试平台:MBP(2013 年初),macOS 10.13.2,3GHz i7,8GB RAM。
有关测试程序,请参阅 benchmark.rb。
美化打印测试,600MB 最小化输入(1M 个对象)
命令 | 时间(秒) | 相对时间 | 备注 |
---|---|---|---|
cat |
2.26 | 0.3x | cat 是一个糟糕的美化打印器 |
jsonxf |
7.76 | 1x | |
serdexf |
9.33 | 1.2x | 对象之间没有新行 🙁 |
jsonpp |
25.0 | 3.2x | |
jq-M. |
67.0 | 8.6x |
最小化测试,850MB 美化打印输入(1M 个对象)
命令 | 时间(秒) | 相对时间 | 备注 |
---|---|---|---|
cat |
1.45 | 0.2x | cat 是一个糟糕的最小化器 |
jsonxf-m |
6.78 | 1x | |
serdexf-m |
7.30 | 1.1x | |
jsonpp |
- | - | 不支持最小化 😭 |
jq-cM. |
78.0 | 12x |
作者和许可证
版权所有 2017-2020,Pete Gamache。
Jsonxf 采用 MIT 许可证发布。
依赖项
~540–750KB