golang json基本操作
JSON解析内置反射方式
import (
"encoding/json"
"fmt"
)
type Users struct {
ID string `json:"id"`
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
//结构体解析成json
user1 := Users{"1", "user1", 22}
s, err := json.Marshal(user1)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(string(s))
}
//json解析到结构体
var user2 Users
err = json.Unmarshal(s, &user2)
if err == nil {
fmt.Println(user2)
}
//map解析成json
m := make(map[string]interface{}, 2)
m["id"] = "a"
m["name"] = "bb"
var data []byte
if data, err = json.Marshal(m); err == nil {
fmt.Println(string(data))
}
//json解析成map
if err = json.Unmarshal(data, &m); err == nil {
fmt.Println(m)
}
}
easyJSON高性能代码生成解析JSON
安装:
go get github.com/mailru/easyjson
如果失败,可以将项目克隆到$GOPATH/src/mailru 目录下 并将包名改为easyjson,然后进入easyjson包下的easyjson目录,运行go build 命令,再将生成的二进制文件放到$GOPATH/bin目录下并改名为easyjson
使用:输入命令easyjson -all models.go生成文件
type BasicInfo struct {
Name string
Age int
}
type JobInfo struct {
Skills []string
}
type Employee struct {
BasicInfo BasicInfo
JobInfo JobInfo
}
var jsonStr = `{
"basic_info":{
"name":"Mike",
"age":30
},
"job_info":{
"skills":["Java","Go","C"]
}
} `
func TestEasyJSON(t *testing.T) {
e := Employee{}
//调用easyJSON生成函数解析json
e.UnmarshalJSON([]byte(jsonStr))
t.Log(e)
//调用easyJSON生成函数解析json
if v, err := e.MarshalJSON(); err != nil {
t.Error(err)
} else {
t.Log(string(v))
}
}
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步