不明なキーを使用したネストされた 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 }
構造はわかりにくいですが、段階的に分析することができます。最初に、「Server1.example.com」や「Server2.example.com」など、動的に変化する未知のサーバー名の存在に注目します。さらに、「host」フィールドには、囲みキーのない暗号的な正規表現が含まれています。
この課題を解明するには、指定された構造体に焦点を移しましょう。
type ServerDetails struct { Message struct{ Hostname struct{ Details struct{ Application string `json:"application"` }`json:"-"` }`json:"-"` }`json:"message"` }
この構造体は次のように設計されています。 「メッセージ」オブジェクト内の既知のフィールドを処理できますが、さまざまなサーバー名と固有の「ホスト」をキャプチャできません。 field.
重要な洞察は、より柔軟なデータ構造、つまり、map[string]ServerStruct を利用することです。これにより、不明なサーバー名を ServerStruct 値を指すキーとして考慮できるようになります。
変更された構造体は次のようになります。
type YourStruct struct { Success bool ResponseMS int Servers map[string]*ServerStruct } type ServerStruct struct { Application string Owner string [...] }
適切な JSON タグを追加すると、次のようになります。 JSON データをこの強化された構造体に正常に解析できるようになりました。
map[string]ServerStruct を使用し、JSON タグを使用したキーなしフィールドの可能性を活用することで、ネストされた JSON データの複雑な構造を効果的に解明し、必要な情報を抽出できます。
以上が未知のキーと型破りなフィールド構造を含むネストされた JSON データを解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。