encoding/jsonjsonparserencoding/jsonjsonparser
encoding/jsonreflectioninterface{}bytes

通过下面的代码来了解下它的使用。

package main

import (
    "github.com/buger/jsonparser"
    "fmt"
)

func main() {
    data := []byte(`{
  "person": {
    "name":{
      "first": "Leonid",
      "last": "Bugaev",
      "fullName": "Leonid Bugaev"
    },
    "github": {
      "handle": "buger",
      "followers": 109
    },
    "avatars": [
      { "url": "https://avatars1.githubusercontent.com/u/14009?v=3&s=460", "type": "thumbnail" }
    ]
  },
  "company": {
    "name": "Acme"
  }
}`)

    result, err := jsonparser.GetString(data, "person", "name", "fullName")
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(result)

    content, valueType, offset, err := jsonparser.Get(data, "person", "name", "fullName")
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(content, valueType, offset)
    //jsonparser提供了解析bool、string、float64以及int64类型的方法,至于其他类型,我们可以通过valueType类型来自己进行转化
    result1, err := jsonparser.ParseString(content)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(result1)

    err = jsonparser.ObjectEach(data, func(key []byte, value []byte, dataType jsonparser.ValueType, offset int) error {
        fmt.Printf("key:%s\n value:%s\n Type:%s\n", string(key), string(value), dataType)
        return nil
    }, "person", "name")
}

参考文章