在Go 中,當資料使用key 包裝在物件中時,可以將JSON 資料部分解組為Map -值對。這樣可以輕鬆識別每個鍵所保存的值的類型。
要實現此目的,請使用encoding/json 套件並將其解組為map[string]json.RawMessage。 json.RawMessage 類型在進一步解析之前捕獲底層 JSON 資料。
var objmap map[string]json.RawMessage err := json.Unmarshal(data, &objmap)
一旦獲得映射,您就可以根據其值繼續解析每個鍵的值已知類型。
對於範例JSON:
{ "sendMsg":{"user":"ANisus","msg":"Trying to send a message"}, "say":"Hello" }
您可以解析sendMsg 並如下所示:
type sendMsg struct { User string Msg string } var s sendMsg err = json.Unmarshal(objmap["sendMsg"], &s) var str string err = json.Unmarshal(objmap["say"], &str)
請注意,必須導出sendMsg 結構中的變數(即大寫)才能正確解組,如下圖所示:
type sendMsg struct { User string Msg string }
請參考此處的工作範例: https://play.golang.org/p/OrIjvqIsi4-
以上是如何將 JSON 部分解組到 Go Map ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!