2017-03-10 10 views
5

serde_json टोकरा का उपयोग के साथ JSON उत्पन्न करें, मैंसुंदर (इंडेंट) serde

::serde_json::to_string(&obj) 

उपयोग कर सकते हैं JSON स्ट्रिंग में एक वस्तु को क्रमानुसार करने। परिणामी जेएसओएन कॉम्पैक्ट स्वरूपण का उपयोग करता है, जैसे:

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

लेकिन मैं सुंदर/इंडेंट जेएसओएन कैसे उत्पन्न करूं? उदाहरण के लिए, मैं इस प्राप्त करना चाहते हैं:

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

उत्तर

5

दांतेदार JSON पाने के लिए to_string_pretty समारोह का उपयोग करें:

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

क्या इंडेंटेशन सेट करने का कोई तरीका है? डिफ़ॉल्ट रूप से यह 2 रिक्त स्थान लगता है। – pietrovismara

0

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()); 
} 
संबंधित मुद्दे