首頁 > 後端開發 > Golang > 如何在 Go 中高效解析部分 JSON 映射?

如何在 Go 中高效解析部分 JSON 映射?

Susan Sarandon
發布: 2024-12-26 07:45:09
原創
260 人瀏覽過

How to Efficiently Parse Partially a JSON Map in Go?

在Go 中將JSON 數據解析為Map

Websocket 伺服器經常接收包裝在鍵值對中的JSON 數據,這些數據指示值的類型。雖然「encoding/json」套件提供了方便的解組功能,但需要將 JSON 資料部分解析為映射以進行進一步處理。

使用 map[string]json.RawMessage 的方法

要實現部分解組,可以使用 map[string]json.RawMessage。這種方法允許將 JSON 資料解組到映射中,鍵是屬性名稱,值是未解析的 JSON 資料。

import (
    "encoding/json"
    "fmt"
)

func main() {
    data := []byte(`{"sendMsg":{"user":"ANisus","msg":"Trying to send a message"},"say":"Hello"}`)

    var objmap map[string]json.RawMessage
    err := json.Unmarshal(data, &objmap)
    if err != nil {
        fmt.Printf("Error unmarshaling JSON: %v", err)
        return
    }

    // Unpack Individual Values

    // Parsing sendMsg
    var s sendMsg
    err = json.Unmarshal(objmap["sendMsg"], &s)
    if err != nil {
        fmt.Printf("Error unmarshaling 'sendMsg': %v", err)
        return
    }
    fmt.Println("sendMsg:", s)

    // Parsing say
    var str string
    err = json.Unmarshal(objmap["say"], &str)
    if err != nil {
        fmt.Printf("Error unmarshaling 'say': %v", err)
        return
    }
    fmt.Println("say:", str)
}

type sendMsg struct {
    User string
    Msg  string
}
登入後複製

在這個方法中,objmap 將包含一個鍵「sendMsg」 " 其值是表示sendMsg 物件的原始JSON 資料。透過進一步將此資料解組到sendMsg 結構中,可以存取各個字段(User 和Msg)。為了確保成功解組,請記住匯出 sendMsg 結構中的欄位(即使用者和訊息)。

以上是如何在 Go 中高效解析部分 JSON 映射?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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