構造を知らずにネストされた JSON をアンマーシャルする
さまざまなスキーマを持つ JSON ドキュメントを含む Key-Value ストアを操作する場合、次のことが困難になります。構造を事前に知らなくても、JSON データを特定の構造体にアンマーシャリングします。この記事では、この問題に対処し、解決策を提案する方法を検討します。
方法 1: インターフェイスへのアンマーシャル
不明な構造を持つ JSON ドキュメントを処理するには、それらをアンマーシャルして、インターフェイス タイプ(map[string]interface{} など)。これにより、特定の構造体を定義する必要なく、基になるデータに辞書としてアクセスできるようになります。
トップレベルの foo 名前空間を map[string]*json.RawMessage にアンマーシャリングすることで、ネストされた JSON を取得できます。データ。ただし、構造体に正しくアンマーシャリングするには、foo 名前空間内のデータの型を判断する必要があります。
方法 2: 正規表現型の抽出
代替案この方法では、JSON データから型文字列を抽出し、正規表現を使用して構造体の型を決定します。型がわかったら、json.RawMessage を適切な構造体にアンマーシャルできます。
繰り返しのアンマーシャル
繰り返しのアンマーシャルが問題となるかどうかは、次のパフォーマンス要件によって異なります。あなたのアプリケーション。速度が重要な場合は、中間インターフェイスを使用する代わりに、特定の構造体に直接アンマーシャリングする方が効率的である可能性があります。ただし、小規模なデータセットやたまにしか使用しない場合、パフォーマンスの低下はそれほど大きくない可能性があります。
更新
提供された更新に基づいて、2 つの可能な解決策が提案されます。
a) コピーとアンマーシャル
b) 正規表現とアンマーシャル
以上が構造を知らずにネストされた JSON をアンマーシャリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。