Using the serde_json crate, I can use
::serde_json::to_string(&obj)
to serialize an object into a JSON string. The resulting JSON uses compact formatting, like:
{"foo":1,"bar":2}
But how do I generate pretty/indented JSON? For example, I'd like to get this:
{ "foo": 1, "bar": 2 }
Use JSON. stringify(obj) method to convert JavaScript objects into strings and display it. Use JSON. stringify(obj, replacer, space) method to convert JavaScript objects into strings in pretty format.
Serde JSON JSON is a ubiquitous open-standard format that uses human-readable text to transmit data objects consisting of key-value pairs. { "name": "John Doe", "age": 43, "address": { "street": "10 Downing Street", "city": "London" }, "phones": [ "+44 1234567", "+44 2345678" ] }
Pretty printing is a form of stylistic formatting including indentation and colouring. JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write and for machines to parse and generate. The official Internet media type for JSON is application/json .
JavaScript Object Notation, more commonly known by the acronym JSON, is an open data interchange format that is both human and machine-readable. Despite the name JavaScript Object Notation, JSON is independent of any programming language and is a common API output in a wide variety of applications.
The serde_json::to_string_pretty
function generates pretty-printed indented JSON.
#[macro_use] extern crate serde_json; fn main() { let obj = json!({"foo":1,"bar":2}); println!("{}", serde_json::to_string_pretty(&obj).unwrap()); }
This approach defaults to 2 spaces of indentation, which happens to be what you asked for in your question. You can customize the indentation by using 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()); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With