#json #formatter #string #limit #pretty #portable #length

bin+lib goldilocks-json-fmt

简单、便携、快速、美观的 JSON 格式化工具

2 个不稳定版本

0.2.0 2022年4月11日
0.1.0 2022年3月16日

#232 in 值格式化

MIT 许可证

540KB
1K SLoC

goldilocks-json-fmt

crates.io

一个简单、便携、快速、美观的 JSON 格式化工具。没有依赖项或不安全代码。

生成的 JSON 在“太宽”(即压缩,一行显示)和“太高”(例如 serde_jsonpretty_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

没有运行时依赖项