A simple and elastic access interface to json object for golang.
go get github.com/yasuyuky/jsonpath
import (
"github.com/yasuyuky/jsonpath"
)
// first you should decode string
data, err := jsonpath.DecodeString(json_string)
// or io.Reader
data, err := jsonpath.DecodeReader(json_reader)
// then you can get element using jsonpath.Get
// 1st arg is decoded data
// 2nd arg is path([]interface{}) for element
// it contain string(for object), int(for array)
// 3rd arg is default value
v, err := jsonpath.Get(data, []interface{}{"foo", 5}, nil)
// you can also use GetString/GetNumber/GetBool
// these function can get element with type assertion
s, err := jsonpath.GetString(data, []interface{}{"bar", "baz"}, "")
// or you can also read directly from io.Reader
v, err := jsonpath.Read(json_reader, []interface{}{"baz", 5}, nil)
// jsonpath.Slice{start, stop} for get range 'start <= x < stop'
// index starts from 0
a, err := jsonpath.Get(data, []interface{}{"baz", jsonpath.Slice{1, 4}}, nil)
you can use func(string/int, interface{}) bool
for complex filtering.
see jsonpath_test.go for more detailed usage
2-clause BSD license