Go Unmarshaling での Void 値と未指定フィールドの区別
Golang での JSON データのアンマーシャリングは簡単ですが、Void 値と未指定フィールドの区別価値観が課題になる可能性があります。この記事では、この問題に対処し、この 2 つを区別するための解決策を提供します。
提供された例には、Category 構造体のスライスがあり、各カテゴリには Name フィールドと description フィールドがあります。 JSON データをこのスライスにアンマーシャリングするときに、カテゴリ B とカテゴリ C の両方に空の説明フィールドがあるというシナリオが発生します。ただし、カテゴリ B の説明が空の文字列として指定されているのか、単に JSON データに存在しないのかを識別する方法があるかどうかを知りたいと考えています。
重要なのは、説明フィールドをオブジェクトへのポインタとして宣言することです。 string:
type Category struct { Name string Description *string }
ポインターを使用すると、空の文字列値を持つ JSON フィールドが存在する場合、空の文字列を指すポインターに設定されます。 (*"")。逆に、フィールドが JSON に存在しない場合、ポインタは nil (
更新された出力は、この区別を例示しています。
[{Name:A Description:0x1050c150} {Name:B Description:<nil>} {Name:C Description:0x1050c158}]
ここでは、カテゴリ A の説明は空ではなく、カテゴリ B の説明は nil (未指定のフィールドを示します)、カテゴリ C の説明は空の文字列です(指定された空の値を示します)。
この手法を使用すると、無効な値 (nil) と未指定のフィールド (nil ポインター) を区別でき、それに応じてプログラムの動作を調整できます。
以上がGo で JSON をアンマーシャリングするときに空のフィールドと欠落しているフィールドを区別するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。