xujianjun2000 / jsonpath-1

A simple and elastic access interface to json object for golang

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

jsonpath for go

Build Status Coverage Status

A simple and elastic access interface to json object for golang.

Install

go get github.com/yasuyuky/jsonpath

Usage

Basic usage (decode and get)

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)

Get with type

// you can also use GetString/GetNumber/GetBool
// these function can get element with type assertion
s, err := jsonpath.GetString(data, []interface{}{"bar", "baz"}, "")

Read directly

// or you can also read directly from io.Reader
v, err := jsonpath.Read(json_reader, []interface{}{"baz", 5}, nil)

Slice for array

// 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)

Using filter function

you can use func(string/int, interface{}) bool for complex filtering.

see jsonpath_test.go for more detailed usage

License

2-clause BSD license

About

A simple and elastic access interface to json object for golang

License:BSD 2-Clause "Simplified" License


Languages

Language:Go 100.0%