前言
go中的gjson库,可以方便地从一个 JSON 串中读取值,并且操作json串
gjson安装
github仓库
可以从仓库查看gjson代码仓库
https://github.com/tidwall/gjson
gjson使用
gjson安装
执行以下命令安装gjson
go get github.com/tidwall/gjson
gjson使用
1、从json串取出某个字段
package main
import (
"encoding/json"
"fmt"
"github.com/tidwall/gjson"
"log"
)
func main() {
a := User{
Id: 1,
Name: "aaa",
}
b, err := json.Marshal(a)
if err != nil {
log.Println("Error marshalling:", err)
return
}
c := string(b)
fmt.Println(c)
id := gjson.Get(c, "id")
fmt.Println(id)
}
type User struct {
Id int64 `json:"id"`
Name string `json:"name"`
}
输出结果为
2、 取出嵌套json
package main
import (
"encoding/json"
"fmt"
"github.com/tidwall/gjson"
"log"
)
func main() {
a := User{
Id: 1,
Name: "aaa",
Person: Person{
Id: 2,
Name: "aaaa",
},
}
b, err := json.Marshal(a)
if err != nil {
log.Println("Error marshalling:", err)
return
}
c := string(b)
fmt.Println(c)
id := gjson.Get(c, "person.id")
fmt.Println(id)
}
type User struct {
Id int64 `json:"id"`
Name string `json:"name"`
Person Person `json:"person"`
}
type Person struct {
Id int64 `json:"id"`
Name string `json:"name"`
}
输出结果为
总结
总之,gjson是一个优秀的操作json库,也有很多优秀的json库,根据自己擅长的做技术选型就行