」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何將已知和未知鍵/值對的 JSON 解析為 Go 結構?

如何將已知和未知鍵/值對的 JSON 解析為 Go 結構?

發佈於2024-11-07
瀏覽:446

How to Parse JSON with Known and Unknown Key/Value Pairs into a Go Struct?

使用任意鍵/值對解組JSON 到結構

問題

如何解析具有已知和未知鍵/值對的JSON 字符串進入Go 結構體?未知欄位可以具有任何名稱和值類型(字串、布林、float64 或 int)。

解決方案

使用已知字段和未知字段的映射切片創建一個結構體:

type Message struct {
    Known1   string `json:"known1"`
    Known2   string `json:"known2"`
    Unknowns []map[string]interface{}
}

將JSON 字串解組到此結構中:

json.Unmarshal([]byte(jsonMsg), &msg)

Unknowns 欄位將包含一個列表表示未知鍵/值對的對應。

替代方案

  1. 雙重解組:

    • 首先,解組到僅包含已知欄位的臨時結構中。
    • 然後,再次解組到 map[string]interface{} 並手動提取未知值。
  2. 解組與型別轉換:

    • 解組到映射[string]介面{}。
    • 迭代映射並將值斷言為適當的類型.

注意事項

所有三種解決方案都是有效的,但最簡單和最優雅的是最初的基於結構的方法。它避免了額外的解組或手動類型轉換的需要。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3