📭

JSON 操作

敏捷操作 json 数据并且性能优于官方 encoding/json 库
 
  • 下标默认支持

读取栗子🌰

读取 JSON
package main import ( "github.com/sohaha/zlsgo/zjson" "github.com/sohaha/zlsgo/zlog" ) // json 数据 var data = ` {"name":"栗子","likes":[666,false],"other":{"type":"妖精"}}` type example struct { Name string `json:"name"` Likes []interface{} `json:"likes"` Other string `json:"other"` } type exampleOther struct { Type string `json:"type"` } var name string var like int func main() { // 快捷获取指定字段的值 name = zjson.Get(data, "name").String() like = zjson.Get(data, "likes.0").Int() zlog.Success("我是:", name, "喜欢:", like) // 等同上面 jsonData := zjson.Parse(data) name = jsonData.Get("name").String() like = jsonData.Get("likes.0").Int() zlog.Success("我是:", name, "喜欢:", like) // 解码为数据结构 var exampleJson example if err := zjson.Unmarshal(data, &exampleJson); err != nil { zlog.Error(err) } zlog.Success("我是:", exampleJson.Name, "喜欢:", exampleJson.Likes[0]) zlog.Success(exampleJson.Other) // 子字段解码为数据结构 var exampleJsonOther exampleOther if err := jsonData.Get("other").Unmarshal(&exampleJsonOther); err != nil { zlog.Error(err) } zlog.Success(exampleJsonOther) }
zjson.Get(json数据源,下标)

操作栗子🌰

设置 JSON
package main import ( "github.com/sohaha/zlsgo/zjson" "github.com/sohaha/zlsgo/zlog" ) type example struct { Name string `json:"name"` Likes []interface{} `json:"likes"` Other string `json:"other"` } func main() { data := `{"Other":"appId"}` // 快捷设置指定字段的值 data, _ = zjson.Set(data, "name", "Demo") data, _ = zjson.Set(data, "likes.0", 666) zlog.Success(data) // 等同上面 data, _ = zjson.Set("", "", &example{"Demo", []interface{}{666}, "appId"}) zlog.Success(data) }
zjson.Set(json数据源,下标,值)

更多

// 转 json jsonStr := zjson.Stringify(json) // json 转 zsjon 对象 res := zjson.Parse(jsonStr) res.get("xx").String() // 等等...,参考 https://godoc.org/github.com/sohaha/zlsgo/zjson zjson.Marshal() zjson.Unmarshal()