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字符串 -> 对象反序列化, 基于 结构体标签, 基于反射, 效率较低```gofunc Unmarshal(data []byte, v interface{}) error
package mainimport ("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 Personerr := json.Unmarshal(b, &p)if err != nil {fmt.Println(err)}fmt.Println(p) // {18 ws true}}
