簡體   English   中英

使用serde生成漂亮(縮進)的JSON

[英]Generate pretty (indented) JSON with serde

使用serde_json包,我可以使用

::serde_json::to_string(&obj)

將對象序列化為JSON字符串。 生成的JSON使用緊湊格式,如:

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

但是如何生成漂亮/縮進的JSON? 例如,我想得到這個:

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

使用to_string_pretty函數獲取縮進的JSON:

::serde_json::to_string_pretty(&obj)

serde_json::to_string_pretty函數生成漂亮的縮進JSON。

#[macro_use]
extern crate serde_json;

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

這種方法默認為2個縮進空格,這恰好是您在問題中要求的。 您可以使用PrettyFormatter::with_indent自定義縮進。

#[macro_use]
extern crate serde_json;

extern crate serde;
use serde::Serialize;

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

    let buf = Vec::new();
    let formatter = serde_json::ser::PrettyFormatter::with_indent(b"    ");
    let mut ser = serde_json::Serializer::with_formatter(buf, formatter);
    obj.serialize(&mut ser).unwrap();
    println!("{}", String::from_utf8(ser.into_inner()).unwrap());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM