Go語言中,使用map很方便地存儲鍵值對。但是,在向前端傳遞map時,需要將其轉換為JSON格式的數據。為了方便轉換,可以使用go map轉json庫。
import ( "encoding/json" "fmt" ) func main() { student := map[string]interface{}{ "name": "Tom", "age": 18, "score": 90, } // 轉換為JSON格式 b, err := json.Marshal(student) if err != nil { fmt.Println("JSON轉換出錯:", err) } fmt.Println(string(b)) }
使用json.Marshal()函數即可將map轉換為JSON格式的字節數組。需要注意的是,在將map轉換為JSON時,必須使用interface{}類型作為map的值。否則,在轉換為JSON時會出現編譯錯誤。
可以通過使用json.Unmarshal()函數,將JSON格式的數據轉換為map。代碼如下:
jsonData := []byte(`{ "name": "Tom", "age": 18, "score": { "math": 90, "english": 85 } }`) var student map[string]interface{} err := json.Unmarshal(jsonData, &student) if err != nil { fmt.Println("JSON轉換出錯:", err) } fmt.Println(student["name"]) fmt.Println(student["age"]) score := student["score"].(map[string]interface{}) fmt.Println(score["math"])
在將JSON格式的數據轉換為map時,必須提供一個與待轉換數據相匹配的map變量。在json.Unmarshal()函數的第二個參數中,&符號表示將該變量的地址傳遞給函數,函數在轉換JSON數據后修改變量的值。
需要注意的是,使用json.Unmarshal()函數轉換出來的map的值都是interface{}類型。在使用時,需要使用類型斷言轉換為對應的類型。