go中gjson操作json

259 阅读1分钟

前言

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"`
}

输出结果为

image.png 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"`
}

输出结果为 image.png

总结

总之,gjson是一个优秀的操作json库,也有很多优秀的json库,根据自己擅长的做技术选型就行