首頁  >  文章  >  後端開發  >  如何使用內建函數在 Go 中漂亮地列印 JSON 輸出?

如何使用內建函數在 Go 中漂亮地列印 JSON 輸出?

Linda Hamilton
Linda Hamilton原創
2024-11-22 04:54:11584瀏覽

How to Pretty Print JSON Output in Go Using Built-in Functions?

使用內建函數在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn