1 简介
- json使用go语言内置的encoding/json 标准库
- 编码json使用json.Marshal()函数可以对一组数据进行JSON格式的编码
2 对象 -> json字符串
```go package mainfunc Marshal(v interface{}) ([]byte, error)
import ( “encoding/json” “fmt” )
type Person struct { Name string Hobby string }
func main() { p := Person{“5lmh.com”, “女”} // 编码json b, err := json.Marshal(p) if err != nil { fmt.Println(“json err “, err) } fmt.Println(string(b))
// 格式化输出
b, err = json.MarshalIndent(p, "", " ")
if err != nil {
fmt.Println("json err ", err)
}
fmt.Println(string(b))
}
<a name="DDCbj"></a>
# 3 json字符串 -> 对象
反序列化, 基于 结构体标签, 基于反射, 效率较低
```go
func Unmarshal(data []byte, v interface{}) error
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Age int `json:"age,string"`
Name string `json:"name"`
Marry bool `json:"marry"`
}
func main() {
// 假数据
b := []byte(`{"age":"18","name":"ws","marry":true}`)
var p Person
err := json.Unmarshal(b, &p)
if err != nil {
fmt.Println(err)
}
fmt.Println(p) // {18 ws true}
}