{}jsonpath.online

go jsonpath

Golang JSONPath Playground

Test and validate JSONPath online, then generate Go code snippets to extract values from JSON with JSONPath expressions.

Input JSON

Live evaluation (300ms)

Result

JSON array of matches
[
  "Sayings of the Century",
  "Sword of Honour",
  "Moby Dick"
]

Generate Code

// go get github.com/PaesslerAG/jsonpath
package main

import (
  "encoding/json"
  "fmt"
  "github.com/PaesslerAG/jsonpath"
)

func main() {
  var doc any
  _ = json.Unmarshal([]byte(/* your JSON */), &doc)
  result, err := jsonpath.Get("$.store.book[*].title", doc)
  fmt.Println(result, err)
}

Go JSONPath: quick start

  • Write a JSONPath like $.store.book[*].
  • Use the evaluator above to validate results instantly.
  • Copy the generated Go snippet and plug in your JSON + path.

JSONPath Syntax Cheatsheet

TokenMeaningExample
$Root object/array$.store.book
@Current node (in filters)$.book[?(@.price < 10)]
*Wildcard$.store.*
..Recursive descent$..author
[n]Array index$.store.book[0]
[a,b]Union$.store.book[0,2]
[start:end]Slice$.store.book[0:2]
[?()]Filter expression$.store.book[?(@.category=='fiction')]

Go JSONPath FAQ

How do I use JSONPath in Go?

Use the code generator below to copy a Go snippet, then replace the JSON and JSONPath expression with your own.

What is JSONPath?

JSONPath is a query language for JSON. It helps you select and extract values from JSON documents using path-like expressions.

How do I filter arrays in JSONPath?

Use filter expressions like $.items[?(@.price < 10)] to select array elements by conditions.

Why does my JSONPath return empty results?

Common reasons include invalid JSON input, a typo in keys, mismatched array/object structure, or using a JSONPath syntax not supported by your library.

Does this tool support recursive descent?

Yes. Use .. to search for keys at any depth, for example $..author.