漂亮的打印 JSON 没有 serde 的换行符?

Pretty print JSON without linebreaks with serde?

我想使用 Rust 的 serde crate 漂亮地打印一些 JSON。使用 serde_json::to_string 我可以得到这个:

{"foo":1,"bar":2}

如果我切换到 serde_json::to_string_pretty 我会得到这个:

{
  "foo": 1,
  "bar": 2
}

但是,我想要一些中间有空格的东西,这样看起来更容易,但没有换行符,所以它保持在一行中:

{"foo": 1, "bar": 2}

我怎样才能做到这一点?请注意,实际 JSON 被字符​​串化可能更复杂,包含未知的嵌套级别。所以只是漂亮的打印然后去掉换行符是行不通的。

在后台,to_string_pretty 使用内置的 PrettyFormatter 调用 Serializer::with_formatter

您的选择是:

  • 创建 Formatter 的自定义实现,以您想要的格式输出 JSON。复制和粘贴 PrettyFormatter 可能是一个好的开始!
  • 修改 PrettyFormatter 以将此作为选项提供并提交拉取请求。它已经允许您自定义用于缩进的字符串,所以我认为允许删除换行符不会太费力!