動的キーを使用したネストされた JSON のアンマーシャリング
複雑な JSON 構造では、キーが動的に変化するネストされたオブジェクトに遭遇すると、アンマーシャリング中に問題が発生する可能性があります。次の JSON データを考えてみましょう:
{ "message": { "Server1.example.com": [ { "application": "Apache", "host": { "name": "/^Server-[13456]/" }, "owner": "User1", "project": "Web", "subowner": "User2" } ], "Server2.example.com": [ { "application": "Mysql", "host": { "name": "/^Server[23456]/" }, "owner": "User2", "project": "DB", "subowner": "User3" } ] }, "response_ms": 659, "success": true }
解決策:
このような JSON を効果的にアンマーシャリングするには、動的キーを持つネストされたオブジェクトに map[string]ServerStruct を使用することを検討してください。 。このアプローチでは、名前が不明な複数のサーバーを含めることができます。
更新された構造体の例を次に示します:
type YourStruct struct { Success bool ResponseMS int Servers map[string]*ServerStruct } type ServerStruct struct { Application string Owner string [...] }
JSON タグを追加することで、デコーダに特定の JSON をマップするように指示できます。フィールドを対応する構造体フィールドに追加します。更新されたタグは次のとおりです。
type YourStruct struct { Success `json:"success"` ResponseMS `json:"response_ms"` Servers `json:"-"` } type ServerStruct struct { Application string `json:"application"` Owner string `json:"owner"` [...] }
「Servers」フィールドの json:"-" タグにより、デコーダは JSON フィールドを「ServerStruct」フィールドに直接マッピングすることをスキップします。代わりに、フィールドを map[string]ServerStruct にマップします。
このアプローチは、動的キーを使用してネストされた JSON オブジェクトをアンマーシャリングするための柔軟なソリューションを提供し、各サーバー オブジェクト内のデータに簡単にアクセスできるようにします。
以上がGo を使用して動的キーを使用してネストされた JSON をアンマーシャリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。