首頁 > 後端開發 > Golang > 如何在不知道其結構的情況下解組嵌套 JSON?

如何在不知道其結構的情況下解組嵌套 JSON?

Barbara Streisand
發布: 2024-11-04 12:01:29
原創
222 人瀏覽過

How to Unmarshal Nested JSON without Knowing its Structure?

在不知道結構的情況下解組嵌套JSON

當使用包含具有不同架構的JSON 文件的鍵值存儲時,很難將JSON 資料解組為特定結構,而無需事先了解其結構。本文探討了解決此問題的方法並提出了解決方案。

方法1:解組到接口

要處理具有未知結構的JSON 文檔,您可以將它們解組為接口類型,例如map[string]interface {}。這允許您以字典的形式存取底層數據,而無需定義特定的結構。

透過將頂層 foo 命名空間解組到 map[string]*json.RawMessage,您可以檢索嵌套的 JSON資料。但是,您仍然需要確定 foo 命名空間中資料的類型,才能將其正確解組到結構中。

方法2:正規表示式類型擷取

另一種方法方法是從JSON資料中擷取類型字串,並使用正規表示式來確定結構體類型。一旦知道類型,您就可以將 json.RawMessage 解組到適當的結構中。

重複解組

是否需要考慮重複解組取決於性能要求您的申請。如果速度至關重要,則直接解組到特定結構而不是使用中間介面可能會更有效。然而,對於小數據集或偶爾使用,效能損失可能並不顯著。

更新

根據提供的更新,提出了兩種可能的解決方案:

a) 複製並解組

  • 製作json.RawMessage 的副本。
  • 將副本解組到介面中。
  • 一旦知道類型,將原始 json.RawMessage 解組到適當的結構中。

b) 正規表示式和解組

  • 使用正規表示式來擷取型別字串。
  • 根據提取的類型字串以程式設計方式建立結構類型。
  • 將 json.RawMessage 解組到新建立的結構中。

以上是如何在不知道其結構的情況下解組嵌套 JSON?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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