首頁 > 後端開發 > Golang > 主體

Go 的「encoding/json」套件如何產生人類可讀的 JSON 輸出?

DDD
發布: 2024-11-21 08:55:09
原創
254 人瀏覽過

How Can Go's `encoding/json` Package Generate Human-Readable JSON Output?

使用Go 的編碼/JSON 套件實現人類可讀的JSON 輸出

您提到在管道時面臨生成人類可讀的JSON 輸出的挑戰透過jq 執行foo 指令的結果。雖然沒有專門為此目的設計的開源 jq 包裝器,但您可以利用 Go 的內建編碼/json 套件來實現所需的結果。

利用json.MarshalIndent() 和Encoder .SetIndent()

json.MarshalIndent() 函數提供了一種將JSON 值為編碼的便捷方法格式化為的便捷方法格式化的字串。透過指定所需的前綴和縮排,您可以產生人類可讀的輸出。同樣,json.Encoder 的 SetIndent() 方法可讓您為 JSON 輸出建立縮排。

範例程式碼

這裡有一個示範 json.MarshalIndent 用法的範例():

package main

import (
    "encoding/json"
)

func main() {
    m := map[string]interface{}{"id": "uuid1", "name": "John Smith"}

    data, err := json.MarshalIndent(m, "", "  ")
    if err != nil {
        panic(err)
    }
    fmt.Println(string(data))
}
登入後複製

也可以使用json.NewEncoder控制縮排:

package main

import (
    "encoding/json"
    "os"
)

func main() {
    enc := json.NewEncoder(os.Stdout)
    enc.SetIndent("", "  ")

    m := map[string]interface{}{"id": "uuid1", "name": "John Smith"}

    if err := enc.Encode(m); err != nil {
        panic(err)
    }
}
登入後複製

格式化預先產生的JSON 文字

如果您有預先產生的JSON 文本,則可以使用json.Indent () 函數格式化它:

package main

import (
    "bytes"
    "encoding/json"
)

func main() {
    src := `{"id":"uuid1","name":"John Smith"}`

    dst := &bytes.Buffer{}
    if err := json.Indent(dst, []byte(src), "", "  "); err != nil {
        panic(err)
    }
    fmt.Println(dst.String())
}
登入後複製

透過使用這些技術,您可以輕鬆地在Go程式中產生人類可讀的 JSON 輸出,而無需需要外部 jq 包裝器。

以上是Go 的「encoding/json」套件如何產生人類可讀的 JSON 輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板