2 个不稳定版本
0.2.0 | 2022年4月11日 |
---|---|
0.1.0 | 2022年3月16日 |
#232 in 值格式化
540KB
1K SLoC
goldilocks-json-fmt
一个简单、便携、快速、美观的 JSON 格式化工具。没有依赖项或不安全代码。
生成的 JSON 在“太宽”(即压缩,一行显示)和“太高”(例如 serde_json
的 pretty_print
)之间取得平衡。您给格式化器一个行限制(默认为 100 个字符),它将尽可能保持宽度同时保持该限制。有时无法达到限制(例如,您有一个比行限制更长的字符串),在这种情况下,格式化器将尽可能少地打破限制。
Goldilocks 格式化器的吞吐量约为 300MB/s,应该适用于大多数情况。它的速度与不使用 SIMD(这会破坏简单性和便携性)的极限相近。
示例
// Ewww so horrible
let json = r#"{"test/cases/87s-at-back.toml":{"comps":[{"length":32,
"string":"sHsH","avg_score":-0.45625},{"length":64,"string":"sHWsMH",
"avg_score":-0.44062495},{"length":96,"string":"WMsWMHsH","avg_score":
-0.33124998},{"length":96,"string":"WsMHWsMH","avg_score":-0.33124998},
{"length":96,"string":"sHWMsWMH","avg_score":-0.33124995},{"length":64,
"string":"WsMHsH","avg_score":-0.284375}]}}"#;
let perfect_json = goldilocks_json_fmt::format(&json).expect("Invalid JSON");
assert_eq!(
&perfect_json,
// So perfect!
r#"{
"test/cases/87s-at-back.toml": {
"comps": [
{ "length": 32, "string": "sHsH", "avg_score": -0.45625 },
{ "length": 64, "string": "sHWsMH", "avg_score": -0.44062495 },
{ "length": 96, "string": "WMsWMHsH", "avg_score": -0.33124998 },
{ "length": 96, "string": "WsMHWsMH", "avg_score": -0.33124998 },
{ "length": 96, "string": "sHWMsWMH", "avg_score": -0.33124995 },
{ "length": 64, "string": "WsMHsH", "avg_score": -0.284375 }
]
}
}"#,
);
许可证:MIT