Go のアンマーシャリングで Void 値と未指定フィールドの謎を明らかにする
Go では、JSON を構造体にアンマーシャリングするときに、次のことが困難になることがあります。 void 値と指定されていないフィールド値を区別します。これにより、プログラムの動作があいまいになる可能性があります。この難題を解決する方法は次のとおりです。
Void 値と未指定値の区別
Void 値は、JSON フィールドが存在するが空の値 (空の文字列など) を持つ場合に発生します。 )、フィールドが JSON から完全に省略されている場合は、未指定の値が発生します。これらを区別するには、ポインターを使用するようにフィールド タイプを変更します。
type Category struct { Name string Description *string }
これで、JSON フィールドに空の文字列が含まれる場合、空の文字列を指すポインターに設定されます。ただし、フィールドが存在しない場合は、nil のままになります。
使用例
次の JSON について考えてみましょう。
[ {"Name": "A", "Description": "Monotremata"}, {"Name": "B"}, {"Name": "C", "Description": ""} ]
フィールド タイプを変更すると、出力は次のようになります:
[{Name:A Description:0x1050c150}, {Name:B Description:<nil>}, {Name:C Description:0x1050c158}]
これにより、フィールド タイプを区別できるようになります。カテゴリ B の指定されていない説明フィールドとカテゴリ C の空の説明フィールド。プログラム内でこれらを個別に処理できるようになりました。
以上がGo でアンマーシャリングするときに、空の JSON フィールドと欠落している JSON フィールドを区別するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。