Home

Awesome

Build Status

This was mostly an experiment to learn go and test using closures to interpret a JSON path. You should use https://github.com/PaesslerAG/jsonpath instead.

jsonpath

a (partial) implementation in Go based on Stefan Goener JSON Path

Limitations

The third limitation comes from using the text/scanner package from the standard library. The last one could be overcome by using reflection.

JsonPath quick intro

All expressions start $.

Examples (supported by the current implementation) :

Checkout the tests for more examples.

Install

go get github.com/yalp/jsonpath

Usage

A jsonpath applies to any JSON decoded data using interface{} when decoded with encoding/json :

var bookstore interface{}
err := json.Unmarshal(data, &bookstore)
authors, err := jsonpath.Read(bookstore, "$..authors")

A jsonpath expression can be prepared to be reused multiple times :

allAuthors, err = jsonpath.Prepare("$..authors")
...
var bookstore interface{}
err := json.Unmarshal(data, &bookstore)
authors, err := allAuthors(bookstore)

The type of the values returned by the Read method or Prepare functions depends on the jsonpath expression.