在Go 中將JSON 部分解組到Map
問題:
考慮一個🎜>問題:
考慮一個🎜>問題:
考慮一個場景,其中Go 伺服器接收封裝在帶有鍵/值對的物件中的JSON 資料。每個鍵對應一個特定類型的值,伺服器需要根據鍵將值解組為適當的結構類型。問題是,可以使用“encoding/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 { // Handle error } // Example: Unmarshal sendMsg value into a struct type sendMsg struct { User string Msg string } var s sendMsg err = json.Unmarshal(objmap["sendMsg"], &s) if err != nil { // Handle error } fmt.Println(s) }
為了實現這一點,我們可以將JSON 資料部分解組為鍵值對的映射,其中鍵是字串,值是json .RawMessage 實例。 RawMessage 表示未處理的 JSON 數據,讓我們可以進一步解組為特定的結構或類型。
以下是示範程式碼: 範例用法:在上面的範例中,JSON 資料首先被解組為地圖[字串]json.RawMessage。然後,為了解析像 sendMsg 這樣的特定值,我們可以進一步將對應的 RawMessage 解組到程式中定義的結構體中。 這種技術可以靈活且有效率地處理具有多個鍵值對的 JSON 數據,其中值可以根據鍵被解組為不同的類型。以上是Go 的「encoding/json」可以將部分 Unmarshal JSON 打包到 Map 嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!