人間が読める 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 サイトの他の関連記事を参照してください。