ホームページ  >  記事  >  バックエンド開発  >  Go の「encoding/json」パッケージはどのようにして人間が判読できる JSON 出力を生成できるのでしょうか?

Go の「encoding/json」パッケージはどのようにして人間が判読できる JSON 出力を生成できるのでしょうか?

DDD
DDDオリジナル
2024-11-21 08:55:09275ブラウズ

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

人間が読める JSON 出力に Go のエンコーディング/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())
}

これらのテクニックを使用すると、次のことができます。外部の jq ラッパーを必要とせずに、Go プログラム内で人間が判読できる JSON 出力を簡単に生成できます。

以上がGo の「encoding/json」パッケージはどのようにして人間が判読できる JSON 出力を生成できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。