不明なキーを使用したネストされた JSON のアンマーシャリング
課題は、未知の数の外部キーと混乱を招く構造のネストされた JSON 構造を解析することにあります。鍵。次の JSON 形式について考えてみましょう。
{ "message": { "Server1.example.com": [], "Server2.example.com": [] }, "response_ms": 659, "success": true }
構造体定義の複雑さ
この複雑さは、サーバー名の外部にクリア キーがないことと、サーバー名の動的な性質に起因します。外側のキー。深くネストされた構造体:
type ServerDetails struct { Message struct { Hostname struct { Details struct { Application string `json:"application"` } `json:"-"` } `json:"-"` } `json:"message"` }
を使用した最初の試行は、不明なサーバー名と、外部キーのない単一のネストされたキーが原因で失敗します。
ダイナミック キー ソリューション
これらの課題を克服するには、トップレベルの構造体内で map[string]ServerStruct を利用できます。 ServerStruct には、アプリケーション、所有者、および各サーバーに固有のその他の関連情報が含まれています。 JSON タグを戦略的に追加して、適切な解析を確保できます。
改訂された構造定義
type YourStruct struct { Success bool ResponseMS int Servers map[string]*ServerStruct } type ServerStruct struct { Application string Owner string [...] }
JSON タグとアンマーシャリング
追加の JSON タグは必要:
{ "message": { "Server1.example.com": [ { "application": "Apache", "host": { "name": "/^Server-[13456]/" }, "owner": "User1", "project": "Web", "subowner": "User2" } ],
「message」フィールドが、map[string][]ServerStruct にアンマーシャリングされるようになりました。マップ内の各キーはサーバー名を表し、対応する値は ServerStruct の配列です。 「host」フィールドは、「-」タグを使用したアンマーシャリング中に無視されます。
これらの変更により、JSON データは修正された構造体に正常に解析されます。
以上が不明なキーと動的サーバー名を含むネストされた JSON をアンマーシャリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。