Skip to content

winterssy/gjson

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
winterssy
Mar 6, 2020
1f68efa · Mar 6, 2020

History

2 Commits
Mar 3, 2020
Mar 3, 2020
Mar 3, 2020
Mar 3, 2020
Mar 3, 2020
Mar 6, 2020
Mar 6, 2020
Mar 3, 2020
Mar 3, 2020
Mar 3, 2020
Mar 3, 2020

Repository files navigation

gjson

gjson provides a convenient way to read arbitrary JSON in Go.

Build codecov Go Report Card GoDoc License

Install

go get -u github.com/winterssy/gjson

Usage

import "github.com/winterssy/gjson"

Quick Start

  • Parse to gjson.Object
data, err := ioutil.ReadFile("./testdata/music.json")
if err != nil {
    log.Fatal(err)
}

obj, err := gjson.Parse(data)
if err != nil {
    panic(err)
}

fmt.Println(obj.GetNumber("code"))
fmt.Println(obj.GetString("data", "total"))
fmt.Println(obj.GetArray("data", "list").Index(0).ToObject().GetString("name"))
// Output:
// 200
// 1917
// 告白气球
  • Bind to struct
const dummyData = `
{
  "code": 200,
  "data": {
    "list": [
      {
        "artist": "周杰伦",
        "album": "周杰伦的床边故事",
        "name": "告白气球"
      },
      {
        "artist": "周杰伦",
        "album": "说好不哭 (with 五月天阿信)",
        "name": "说好不哭 (with 五月天阿信)"
      }
    ]
  }
}
`
var s struct {
    Code int `json:"code"`
    Data struct {
        List gjson.Array `json:"list"`
    } `json:"data"`
}
err := gjson.UnmarshalFromString(dummyData, &s)
if err != nil {
    panic(err)
}

fmt.Println(s.Data.List.Index(0).ToObject().GetString("name"))
// Output:
// 告白气球

Build with jsoniter

gjson uses encoding/json as default json package but you can change to jsoniter by build from other tags.

go build -tags=jsoniter .

License

MIT

Releases

No releases published

Packages

No packages published

Languages