本文作者:icy

Golang-json 的使用 encoding/json 和 gjson

icy 2021-01-26 369 抢沙发
Golang-json 的使用 encoding/json 和 gjson 摘要: golang 解析json有很多种方法 go自己的json```go package main import ( “fmt” “en...

golang 解析json有很多种方法 go自己的json

    package main
    import (
        "fmt"
        "encoding/json"
        "time"

    )

    func main() {
        type FruitBasket struct {
            Name    string 
            Fruit   []string
            Id      int64 `json:"id"`// 对应的json key
            Created time.Time
        }
        jsonData := []byte(`
        {
            "Name": "Standard",
            "Fruit": [
                 "Apple",
                "Banana",
                "Orange"
            ],
            "id": 1,
            "Created": "2021-01-26"
        }`)
        var basket FruitBasket
        err := json.Unmarshal(jsonData, &basket)
        if err != nil {
             fmt.Println(err)
        }
        fmt.Println(basket.Name, basket.Fruit, basket.Id)
        fmt.Println(basket.Created)
    }

我比较习惯了使用 gjson
$ go get -u github.com/tidwall/gjson 安装

    JO := gjson.Parse(`{
            "Name": "Standard",
            "Fruit": [
                 "Apple",
                "Banana",
                "Orange"
            ],
            "id": 1,
            "Created": "2021-01-26"
        }`) 

     fmt.Println(JO.Get("Created").String())
    //结果集的方法
    result.Exists() bool 
    result.Value() interface{} 
    result.Int() int64 
    result.Uint() uint64 
    result.Float() float64 
    result.String() string 
    result.Bool() bool 
    result.Time() time.Time 
    result.Array() []gjson.Result 
    result.Map() map[string]gjson.Result 
    result.Get(path string) 
    Result result.ForEach(iterator func(key, value Result) bool) 
    result.Less(token Result, caseSensitive bool) bool
    //类型关系
    boolean >> bool 
    number >> float64 
    string >> string 
    null >> nil 
    array >> []interface{} 
    object >> map[string]interface{}

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享

发表评论

快捷回复:

评论列表 (暂无评论,369人围观)参与讨论

还没有评论,来说两句吧...