Go を使用した JSON 解析のデフォルト値の指定
Go で JSON オブジェクトを解析する場合、フィールドにデフォルト値を指定する必要がある場合があります。入力 JSON では提供されません。次のフィールドを持つ構造体タイプを考えてみましょう:
type Test struct { A string B string C string }
A、B、および C に必要なデフォルト値がそれぞれ "a"、"b"、および "c" であるとします。次の JSON を解析する場合:
{"A": "1", "C": 3}
予期される構造体は次のようになります:
Test{A: "1", B: "b", C: "3"}
encoding/json パッケージを使用する
ビルドされたGo の -in エンコーディング/json パッケージを使用すると、JSON 解析中にデフォルト値を指定できます。空の構造体を使用する代わりに、次のように必要なデフォルト値を含む構造体を提供します。
var example []byte = []byte(`{"A": "1", "C": "3"}`) out := Test{ A: "default a", B: "default b", // default for C will be "", the empty value for a string } err := json.Unmarshal(example, &out) // <- if err != nil { panic(err) } fmt.Printf("%+v", out)
json.Unmarshal(example, &out) を呼び出すことにより、JSON は out 構造体にアンマーシャリングされ、値が上書きされます。 JSONで指定します。ただし、JSON に存在しないフィールドのデフォルト値は変更されません。例を実行すると、以下が返されます:
{A:1 B:default b C:3}
その他の Go ライブラリ
エンコーディング/json パッケージが特定の要件を満たしていない場合は、同様の機能を提供する他の Go ライブラリがあります。次の点を考慮してください:
以上がGo で JSON を解析するときにデフォルト値を設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。