Documentation ¶
Overview ¶
Package jsonpath implements Stefan Goener's JSONPath http://goessner.net/articles/JsonPath/
A jsonpath applies to any JSON decoded data using interface{} when decoded with encoding/json (http://golang.org/pkg/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.
Limitations ¶
No support for subexpressions and filters. Strings in brackets must use double quotes. It cannot operate on JSON decoded struct fields.
Index ¶
- func Find(j interface{}, jpath string) interface{}
- func FindFirst(j interface{}, jpath string) interface{}
- func Read(value interface{}, path string) (interface{}, error)
- func RecursiveDeepJsonPath(i any) []string
- func RecursiveDeepReplace(i any, val any) []any
- func RecursiveDeepReplaceString(i string, val any) []string
- func Replace(origin any, path string, replaceValue interface{}) (map[string]interface{}, error)
- func ReplaceAll(j interface{}, jpath string, replaceValue interface{}) map[string]interface{}
- func ReplaceEx(origin any, path string, replaceValue interface{}) (any, error)
- func ReplaceString(i string, jp string, replaced any) string
- func ToMapInterface(origin any) (map[string]interface{}, any, error)
- type FilterFunc
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Read ¶
Read a path from a decoded JSON array or object ([]interface{} or map[string]interface{}) and returns the corresponding value or an error.
The returned value type depends on the requested path and the JSON value.
func RecursiveDeepJsonPath ¶
func RecursiveDeepReplace ¶
func ReplaceAll ¶
Types ¶
type FilterFunc ¶
type FilterFunc func(value interface{}) (interface{}, error)
FilterFunc applies a prepared json path to a JSON decoded value
func Prepare ¶
func Prepare(path string) (FilterFunc, error)
Prepare will parse the path and return a filter function that can then be applied to decoded JSON values.