一貫性のないフィールドを持つ JSON のアンマーシャリング: 文字列と配列の処理
JSON データを Go 構造体にアンマーシャリングする場合、フィールドの処理が困難になる場合がありますそれは種類が異なる場合があります。たとえば、フィールドはほとんどの場合文字列ですが、場合によっては文字列の配列になることがあります。この問題に取り組むために、Go の強力な JSON 解析機能を活用するソリューションを紹介します。
json.RawMessage による変動フィールドのキャプチャ
一貫性のない JSON フィールドを処理するための鍵json.RawMessage を使用して生データをキャプチャすることにあります。このタイプは、解析されていない JSON 値を格納するバイトのスライスです。生データを保存することで、特定のタイプに応じて後で柔軟に解析できるようになります。
DisplayName フィールドを非表示にし、デコード後に埋め込む
関連するデータを取得する前にデコーダが DisplayName フィールドを解釈しようとするのを防ぐため、JSON の「-」名を使用して非表示にします。この名前は、最初のアンマーシャリング中にフィールドを無視するようにデコーダーに指示します。最上位の JSON がデコードされた後、解析された生データに基づいて DisplayName フィールドに手動で入力します。
さまざまな種類の生データの処理
生データが文字列であるか文字列の配列であるかに関係なく、次のように処理します。
のループへの統合MyListings
MyListings などの項目のリストを処理するには、各項目を反復処理して、上記と同じアンマーシャリング ロジックを実行できます。これにより、各アイテムの DisplayName フィールドの不一致を処理できるようになります。
カスタム アンマーシャラーを使用したロジックのカプセル化
データ モデル内の複数のフィールドに不一致がある可能性がある場合型を実装する場合、json.Unmarshaler インターフェイスを実装するカスタム型にロジックをカプセル化すると有益な場合があります。これにより、プロセスが簡素化され、重複が削減されます。
結論として、json.RawMessage を採用し、可変フィールドを非表示にすることで、一貫性のないフィールドを持つ JSON データを効果的にアンマーシャリングし、必要なすべてのデータが正しくキャプチャされ、解析されるようにすることができます。提供されている例とプレイグラウンドのリンクは、実際のソリューションを示しています。
以上がGo で一貫性のない JSON フィールド (文字列と配列) を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。