首頁 > 後端開發 > Golang > 如何在Go中修改未知結構的JSON物件?

如何在Go中修改未知結構的JSON物件?

Patricia Arquette
發布: 2024-12-27 16:58:14
原創
175 人瀏覽過

How Can I Modify a JSON Object with an Unknown Structure in Go?

處理具有未知結構的JSON:解組和修改

在許多程式設計場景中,處理具有未知結構的JSON 資料可能具有挑戰性。然而,Go 提供了一個解決方案來克服這個障礙。

考慮一下你收到這樣的 JSON 字串的情況:

{
  "votes": {
    "option_A": "3"
  }
}
登入後複製

你的目標是新增一個新的「count」鍵JSON 物件的值「1」。但是,由於 JSON 結構是不可預測的,因此您無法將標準 json.Unmarshal 函數與預先定義的結構一起使用。

要解決此挑戰,您可以使用 map[string]interface{} 類型。這允許您將 JSON 解組為通用映射,其中鍵是字串,值是可以表示任何類型資料的介面。

程式碼示範如何實現此目的:

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    in := []byte(`{
        "votes": {
            "option_A": "3"
        }
    }`)

    var raw map[string]interface{}
    if err := json.Unmarshal(in, &raw); err != nil {
        panic(err)
    }

    raw["count"] = 1

    out, err := json.Marshal(raw)
    if err != nil {
        panic(err)
    }

    fmt.Println(string(out))
}
登入後複製

在此程式碼中,我們將 JSON 資料解組到原始映射中。由於結構未知,因此值表示為介面。

然後我們可以透過新增一個新的鍵值對來修改映射,其中「count」為鍵,1為值。最後,我們使用 json.Marshal 將修改後的映射編組回 JSON 字串。

輸出將如預期:

{"votes":{"option_A":"3"},"count":1}
登入後複製

此技術提供了一種靈活的方法來處理 JSON 資料未知的結構,讓您可以根據需要修改和豐富資料。

以上是如何在Go中修改未知結構的JSON物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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