首頁 >後端開發 >Golang >如何解組未知結構的巢狀 JSON?

如何解組未知結構的巢狀 JSON?

Patricia Arquette
Patricia Arquette原創
2024-11-02 22:48:02890瀏覽

How to Unmarshal Nested JSON with Unknown Structure?

解組具有未知結構的嵌套JSON

使用儲存具有不同結構的JSON 文件的資料庫時,解組可能具有挑戰性在事先不知道確切結構的情況下將資料轉換為特定結構。在這裡,我們探討了兩種解決此問題的方法。

檢查類型

在解組 JSON 資料之前,我們需要確定其類型。這可以使用以下方法之一來實現:

  • 解組到映射[string]介面{}:透過將json.RawMessage 解組到映射中,我們可以存取“type”欄位用於標識資料的類型。這種方法使我們能夠避免重複的解組。
  • 使用正規表示式來提取類型字串:我們可以使用正規表示式來搜尋「type」欄位並提取其值,然後可以與已知類型進行比較。

解組到特定結構

一旦確定了 JSON 資料的類型,我們就可以將其解組到對應的結構體中。在您的情況下,如果您事先知道可能的類型,則可以建立一系列 if-else 語句或 switch 語句來將資料解組到適當的結構中。

避免重複解組

為了避免重複解組,​​您可以建立 json.RawMessage 的副本,然後先將其解組到介面中。一旦知道類型,您就可以將原始 json.RawMessage 解組到確定類型的結構中。

使用正規表示式確定類型

如果您願意使用正規表示式,您可以按照以下步驟操作:

  1. 使用regexp .MustCompile 函數建立與「type」欄位相符的正規表示式。
  2. 使用 regexp.MustCompile 函數建立與「type」欄位相符的正規表示式。 FindStringSubmatch 函數提取類型字串。
  3. 使用提取的類型字串來決定用於解組的適當結構。

結論

透過使用上述方法,您可以有效地解組嵌套 JSON 數據,而無需知道其確切結構。這使得在使用動態資料來源時具有更大的靈活性和便利性。

以上是如何解組未知結構的巢狀 JSON?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn