首頁  >  文章  >  後端開發  >  如何將已知和未知鍵/值對的 JSON 解析為 Go 結構?

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

DDD
DDD原創
2024-10-28 02:13:30369瀏覽

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

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

問題

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

解決方案

使用已知欄位和未知欄位的映射切片建立一個結構體:

<code class="go">type Message struct {
    Known1   string `json:"known1"`
    Known2   string `json:"known2"`
    Unknowns []map[string]interface{}
}</code>

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

<code class="go">json.Unmarshal([]byte(jsonMsg), &msg)</code>

Unknowns 欄位將包含表示未知鍵/值對的對應清單。

替代方案

  1. 雙重解組:

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

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

注意事項

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

以上是如何將已知和未知鍵/值對的 JSON 解析為 Go 結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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