使用 serde 生成漂亮的(缩进的)JSON

2023-12-27

使用serde_json https://github.com/serde-rs/json板条箱,我可以用

::serde_json::to_string(&obj)

将对象序列化为 JSON 字符串。生成的 JSON 使用紧凑格式,例如:

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

但是如何生成漂亮/缩进的 JSON 呢?例如,我想得到这个:

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

The serde_json::to_string_pretty https://docs.rs/serde_json/latest/serde_json/fn.to_string_pretty.html函数生成打印精美的缩进 JSON。

use serde_json::json;

fn main() {
    let obj = json!({"foo":1,"bar":2});
    println!("{}", serde_json::to_string_pretty(&obj).unwrap());
}

此方法默认为 2 个缩进空间,这恰好是您在问题中所要求的。您可以使用自定义缩进PrettyFormatter::with_indent https://docs.rs/serde_json/latest/serde_json/ser/struct.PrettyFormatter.html.

use serde::Serialize;
use serde_json::json;

fn main() {
    let obj = json!({"foo":1,"bar":2});

    let mut buf = Vec::new();
    let formatter = serde_json::ser::PrettyFormatter::with_indent(b"    ");
    let mut ser = serde_json::Serializer::with_formatter(&mut buf, formatter);
    obj.serialize(&mut ser).unwrap();
    println!("{}", String::from_utf8(buf).unwrap());
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 serde 生成漂亮的(缩进的)JSON 的相关文章

随机推荐