#json #pretty-print #minimize #json-stream #pretty

bin+lib jsonxf

快速 JSON 美化打印器和最小化器

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 编码

Download history 665/week @ 2024-03-13 966/week @ 2024-03-20 893/week @ 2024-03-27 967/week @ 2024-04-03 986/week @ 2024-04-10 1020/week @ 2024-04-17 988/week @ 2024-04-24 1365/week @ 2024-05-01 849/week @ 2024-05-08 1036/week @ 2024-05-15 731/week @ 2024-05-22 929/week @ 2024-05-29 660/week @ 2024-06-05 742/week @ 2024-06-12 868/week @ 2024-06-19 718/week @ 2024-06-26

3,116 每月下载量
用于 21 个 crate (18 个直接使用)

MIT 许可证

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_jsonserde-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