We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
Today, we have a simple recipe to pretty-print JSON using Golang:
package main
import (
"bytes"
"encoding/json"
"fmt"
"log"
)
func formatJSON(data []byte) ([]byte, error) {
var out bytes.Buffer
err := json.Indent(&out, data, "", " ")
if err == nil {
return out.Bytes(), err
}
return data, nil
}
func main() {
data := []byte(`{"key":"hello","msg":"world"}`)
prettyJSON, err := formatJSON(data)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(prettyJSON))
}
Run this in the Go Playground.
The idea is that we take a byte slice of JSON data and then use the json.Indent
method to format it. It's signature is as follows:
func Indent(dst *bytes.Buffer, src []byte, prefix, indent string) error
Indent appends to
dst
an indented form of the JSON-encodedsrc
. Each element in a JSON object or array begins on a new, indented line beginning withprefix
followed by one or more copies ofindent
according to the indentation nesting. The data appended todst
does not begin with theprefix
nor any indentation, to make it easier to embed inside other formatted JSON data. Although leading space characters (space, tab, carriage return, newline) at the beginning ofsrc
are dropped, trailing space characters at the end ofsrc
are preserved and copied todst
. For example, ifsrc
has no trailing spaces, neither willdst
; ifsrc
ends in a trailing newline, so willdst
.
To accomplish the same in Python, you can do:
import json
def formatJSON(input):
parsed = json.loads(input)
return json.dumps(parsed, indent=4)
def main():
data = '{"key":"hello","msg":"world"}'
pretty_json = formatJSON(data)
print(pretty_json)
if __name__ == "__main__":
main()
If this post was enjoyable or useful for you, please share it! If you have comments, questions, or feedback, you can email my personal email. To get new posts, subscribe use the RSS feed.