對(duì)于一個(gè)web服務(wù)镀梭,一般都會(huì)用到Json作為出入?yún)T啵敲磄o作為一門后端語言苍姜,在它的標(biāo)準(zhǔn)庫(kù)里面就已經(jīng)內(nèi)置了json庫(kù)
我們只要使用他的api Marshal 與 Unmarshal就可以很輕松的在json與對(duì)象之間轉(zhuǎn)換
下面是是一個(gè)json轉(zhuǎn)換的例子
新建go文件json.go代碼如下
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string
Age int16
Married bool
}
func main() {
user := &User{
Name: "juan",
Age: 20,
Married: false,
}
marshal, err := json.Marshal(user)
if err != nil {
fmt.Println(err.Error())
}
// marshal 返回的是個(gè)[]byte 轉(zhuǎn)成 string
fmt.Println(string(marshal))
fmt.Println("------------------------")
jsonStr := "{\"Name\":\"wendell\",\"Age\":25,\"Married\":true}"
err = json.Unmarshal([]byte(jsonStr), user)
if err != nil {
fmt.Println(err.Error())
}
fmt.Println(user)
}
執(zhí)行
{"Name":"juan","Age":20,"Married":false}
------------------------
&{wendell 25 true}
Process finished with the exit code 0
可以看到打印結(jié)果也是沒問題的鲁僚,但是在go中結(jié)構(gòu)體字段首字母大寫才是其它包可以訪問的,類似于java中的public訪問修飾符容达,但是往往在web應(yīng)用中json的格式都是首字母小寫的駝峰命名古涧。
在go中對(duì)于結(jié)構(gòu)體提供了tag標(biāo)記,如果是一個(gè)要轉(zhuǎn)換json的結(jié)構(gòu)體可以加上json tag指定json轉(zhuǎn)換后的名字
下面修改結(jié)構(gòu)體
type User struct {
Name string `json:"name"`
Age int16 `json:"age"`
Married bool `json:"married"`
}
再次執(zhí)行
{"name":"juan","age":20,"married":false}
------------------------
&{wendell 25 true}
Process finished with the exit code 0
go語言中json的使用就介紹到這里花盐,大家趕緊實(shí)踐一下吧羡滑。
關(guān)于關(guān)注,學(xué)習(xí)不迷路算芯!