解组具有未知键的嵌套 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" } ],
“消息”字段现在解组到map[string][]ServerStruct中。映射中的每个键代表一个服务器名称,对应的值是一个ServerStruct数组。使用“-”标签进行解组时会忽略“host”字段。
通过这些修改,可以将 JSON 数据成功解析为修改后的结构。
以上是如何解组具有未知密钥和动态服务器名称的嵌套 JSON?的详细内容。更多信息请关注PHP中文网其他相关文章!