首頁 > 後端開發 > Golang > 如何解析具有未知鍵和非常規欄位結構的巢狀 JSON 資料?

如何解析具有未知鍵和非常規欄位結構的巢狀 JSON 資料?

Linda Hamilton
發布: 2024-11-16 21:22:03
原創
618 人瀏覽過

How to Parse Nested JSON Data with Unknown Keys and Unconventional Field Structures?

解開未知鍵的巢狀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"`
}
登入後複製

這個結構的設計處理「訊息」物件中的已知字段,但它無法捕獲不同的伺服器名稱和特殊的“主機”欄位。

一個關鍵的見解是利用更靈活的資料結構,即 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 資料的複雜結構並提取所需的訊息。

以上是如何解析具有未知鍵和非常規欄位結構的巢狀 JSON 資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板