型キーを使用した動的 JSON 構造のアンマーシャリング
JSON ドキュメントに動的に型指定されたフィールドを持つ異種構造が含まれる状況では、 Go 構造体に効率的にアンマーシャリングするための戦略。一般的な要件は、バリアント フィールドのプレースホルダーとして追加の汎用フィールドを導入せずに、JSON ドキュメントを構造体にアンマーシャリングすることです。
これを実現するための 1 つのアプローチは、バリアント フィールド間の共通プロパティを表すインターフェイスを作成することです。この場合、GetType() メソッドを使用した Something インターフェイスを定義できます。さらに、DynamicTypeA や DynamicTypeB など、さまざまなプロパティを持つさまざまなタイプの動的フィールドをサポートするために、いくつかの構造体と関数を構築できます。
次のステップでは、BigStruct 型の json.Unmarshaler を実装します。このカスタム アンマーシャリング メソッドは、dynamic_field JSON オブジェクト内の Type フィールドを検査し、DynamicField フィールドのタイプを動的に決定できます。たとえば、Type フィールドが「A」の場合、DynamicField フィールドは DynamicTypeA のインスタンスに設定する必要があります。これにより、JSON 構造に基づいて実行時の型を選択できます。
DynamicField の型を変更できない場合の代替アプローチは、BigStruct 型に UnmarshalJSON メソッドを実装し、再帰を避けるために一時的な型を宣言することです。 。この一時的な型はアンマーシャリング プロセスの仲介として機能し、無限再帰を防ぎます。
これらの手法を採用することで、動的 JSON 構造を Go 構造体に効果的にアンマーシャリングすることができ、バリアント フィールド型の柔軟な処理と操作が可能になります。 .
以上がGo で型キーを使用して動的 JSON 構造をアンマーシャリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。