对于一个web服务,一般都会用到Json作为出入参,那么go作为一门后端语言,在它的标准库里面就已经内置了json库
我们只要使用他的api Marshal 与 Unmarshal就可以很轻松的在json与对象之间转换
下面是是一个json转换的例子
新建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 返回的是个[]byte 转成 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)
}
执行
{"Name":"juan","Age":20,"Married":false}
------------------------
&{wendell 25 true}
Process finished with the exit code 0
可以看到打印结果也是没问题的,但是在go中结构体字段首字母大写才是其它包可以访问的,类似于java中的public访问修饰符,但是往往在web应用中json的格式都是首字母小写的驼峰命名。
在go中对于结构体提供了tag标记,如果是一个要转换json的结构体可以加上json tag指定json转换后的名字
下面修改结构体
type User struct {
Name string `json:"name"`
Age int16 `json:"age"`
Married bool `json:"married"`
}
再次执行
{"name":"juan","age":20,"married":false}
------------------------
&{wendell 25 true}
Process finished with the exit code 0
go语言中json的使用就介绍到这里,大家赶紧实践一下吧。
欢迎关注,学习不迷路!