一、#encoding/json包的介紹
在 Golang 中,有一個標準庫叫做 「encoding/json」,提供了將 Golang 中的數據類型轉化為 JSON 的函數。它包括兩個主要功能:Marshal 和 Unmarshal。其中 Marshal 可以將 Go 語言中的數據類型 轉換為 JSON 字元串,而 Unmarshal 可以將 JSON 字元串轉回 Go 語言的數據類型。這個庫的使用方法非常簡單,學習難度也不大。
二、使用Marshal將Map轉換成JSON數據
首先來看一個很簡單的例子:將一個 Map 轉換成 JSON 的代碼如下:
package main
import (
"encoding/json"
"fmt"
)
func main() {
myMap := make(map[string]string)
myMap["name"] = "Tom"
myMap["age"] = "18"
result, err := json.Marshal(myMap)
if err != nil {
fmt.Println("json Marshal failed :", err)
return
}
fmt.Println("result:", string(result))
}
運行結果如下:
result: {"age":"18","name":"Tom"}
可以看到,將 Map 轉換成 JSON 的過程非常簡單,只需要調用 json.Marshal 函數,將 Map 作為參數傳入,就可以得到轉換後的 JSON 字元串。
三、為結構體定義標籤並將Map轉換成JSON數據
在實際的開發中,我們可能會用到結構體來管理數據,比如用戶信息、商品信息等等。下面我們以一個用戶信息為例,並為它定義一個 JSON 標籤,將其轉換成 JSON 格式的字元串。
type User struct {
UserName string `json:"userName"`
Age int `json:"age"`
Address string `json:"address,omitempty"`
}
func main() {
user := User{
UserName: "Tom",
Age: 18,
}
result, err := json.Marshal(user)
if err != nil {
fmt.Println("json Marshal failed :", err)
return
}
fmt.Println("result:", string(result))
}
運行結果如下:
result: {"userName":"Tom","age":18}
可以看到,我們為結構體定義了一個 JSON 標籤,它的作用是將結構體的欄位名轉換成 JSON 文件中對應的欄位名。
四、使用map[string]interface{}將多個數據類型轉換成JSON數據
通過 map[string]interface{},可以轉換任意複雜的數據類型到 JSON 字元串。下面是一個例子,其中包含一個 Map 和一個切片:
func main() {
myMap := make(map[string]interface{})
myMap["name"] = "Tom"
myMap["age"] = 18
var score []int
score = append(score, 95)
score = append(score, 98)
score = append(score, 99)
myMap["score"] = score
result, err := json.Marshal(myMap)
if err != nil {
fmt.Println("json Marshal failed :", err)
return
}
fmt.Println("result:", string(result))
}
運行結果如下:
result: {"age":18,"name":"Tom","score":[95,98,99]}
通過 map[string]interface{},可以非常方便地轉換任意複雜的數據類型。
五、使用json.Unmarshal將JSON數據轉換為Map
除了將 Golang 中的數據類型轉換為 JSON,我們還可以將 JSON 字元串轉換成 Golang 中的數據類型。這可以通過調用 json.Unmarshal 函數來實現。
func main() {
jsonStr := `{"name":"Tom","age":18}`
var myMap map[string]interface{}
err := json.Unmarshal([]byte(jsonStr), &myMap)
if err != nil {
fmt.Println("json Unmarshal failed :", err)
return
}
fmt.Println(myMap)
}
運行結果如下:
map[age:18 name:Tom]
可以看到,我們成功地將一個 JSON 字元串轉換成了一個 Map。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/228805.html
微信掃一掃
支付寶掃一掃