Go での JSON アンマーシャリング中の Void フィールドと未指定フィールドの認識
JSON では、次の場合に void 値と未指定フィールドを区別するのが難しい場合があります。データを Go 構造にアンマーシャリングします。
たとえば、次のことを考えてみましょう。 JSON:
[ {"Name": "A", "Description": "Monotremata"}, {"Name": "B"}, {"Name": "C", "Description": ""} ]
次のように Go 構造を定義すると:
type Category struct { Name string Description string }
JSON をカテゴリ インスタンスのスライスにアンマーシャリングすると、次の出力が得られます:
[{Name:A Description:Monotremata} {Name:B Description:} {Name:C Description:}]
B の description フィールドは空の文字列ですが、C の description フィールドは JSON から完全に省略されていることに注意してください。どちらの場合も、Go 表現では説明フィールドが空の文字列に設定されます。
これらのケースを区別するための 1 つの方法は、オプションのフィールドにポインターを使用することです。 description の型をポインターに変更することで、空の文字列値と nil 値 (未指定のフィールドを示す) を区別できます。
type Category struct { Name string Description *string }
この変更された構造に JSON をアンマーシャルすると、次のようになります。次の出力:
[{Name:A Description:0x1050c150} {Name:B Description:<nil>} {Name:C Description:0x1050c158}]
ご覧のとおり、B の description フィールドは nil になり、C の description フィールドはへのポインタになっています。空の文字列 (16 進数のメモリ アドレスで示される)。これにより、指定されていないフィールドを識別し、プログラム内でそれらを適切に処理できるようになります。
以上がGo で JSON をアンマーシャリングするときに、Void フィールドと未指定フィールドを区別するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。