2017-03-10 17 views
5

Sử dụng serde_json thùng, tôi có thể sử dụngTạo khá JSON (thụt vào) với serde

::serde_json::to_string(&obj) 

serialize một đối tượng vào một chuỗi JSON. JSON kết quả sử dụng định dạng nhỏ gọn, như:

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

Nhưng làm cách nào để tạo JSON đẹp/thụt vào? Ví dụ, tôi muốn có được điều này:

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

Trả lời

5

Sử dụng to_string_pretty chức năng để có được JSON thụt vào:

::serde_json::to_string_pretty(&obj) 
+0

Có cách nào để đặt thụt lề không? Theo mặc định, có vẻ như 2 dấu cách. – pietrovismara

0

Chức năng serde_json::to_string_pretty tạo ra khá-in JSON thụt vào.

#[macro_use] 
extern crate serde_json; 

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

Cách tiếp cận này mặc định là 2 khoảng trống thụt đầu dòng, điều này xảy ra với những gì bạn hỏi trong câu hỏi của bạn. Bạn có thể tùy chỉnh thụt đầu dòng bằng cách sử dụng 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()); 
} 
Các vấn đề liên quan