使用內建函數在Go 中漂亮地列印JSON 輸出
在Go 程式中處理JSON 輸出時,通常需要列印出來人類可讀。雖然 jq 可以用於此目的,但 Go 標準庫中也有內建函數可以實現所需的結果。
Json Marshal Indenting
The coding/json 套件提供了 json.MarshalIndent() 函數來漂亮地列印 JSON 輸出。它需要兩個附加參數:
透過傳遞空字串作為前綴和空格作為縮排,可以獲得人類可讀的JSON輸出:
m := map[string]interface{}{"id": "uuid1", "name": "John Smith"} data, err := json.MarshalIndent(m, "", " ") if err != nil { panic(err) } fmt.Println(string(data))
輸出:
{ "id": "uuid1", "name": "John Smith" } { "id": "uuid1", "name": "John Smith" }
使用 Encoder 時也可以使用 json.Encoder.SetIndent() 方法設定縮排參數:
enc := json.NewEncoder(os.Stdout) enc.SetIndent("", " ") if err := enc.Encode(m); err != nil { panic(err) }
傑森縮排
如果您已有JSON 字串,可以使用json.Indent() 函數來格式化:
src := `{"id":"uuid1","name":"John Smith"}` dst := &bytes.Buffer{} if err := json.Indent(dst, []byte(src), "", " "); err != nil { panic(err) } fmt.Println(dst.String())
輸出:
{ "id": "uuid1", "name": "John Smith" }
以上是如何使用內建函數在 Go 中漂亮地列印 JSON 輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!