ホームページ > バックエンド開発 > Golang > Go で JSON を解析するときにデフォルト値を設定するにはどうすればよいですか?

Go で JSON を解析するときにデフォルト値を設定するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-10 17:12:17
オリジナル
556 人が閲覧しました

How Can I Set Default Values When Parsing JSON in Go?

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 ライブラリがあります。次の点を考慮してください:

  • [xjson](https://github.com/gobuffalo/x/blob/master/xjson/xjson.go) は、次の仕様を可能にするカスタマイズ可能な JSON パーサーを提供します。デフォルト値とその他のオプション。
  • [eson](https://github.com/sean-/eson) は別の JSON パーサーですこれは、default() メソッドを通じてデフォルト値をサポートします。

以上がGo で JSON を解析するときにデフォルト値を設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート