Find the path of a key / value in a JSON hierarchy easily.
The original name of the project was "JSON Path", but it turned out that there is a specification called like this, so I renamed it to jpath. This project has nothing to do with the JSON path specification.
(It turned out that IBM has a query language called JPath. This project has nothing to do with that.)
When working with big and nested JSON files, sometimes it's very difficult to figure out the path of a key. You open the JSON file in a text editor, find the key / value pair you need, but then it can be a pain to get the full path of the key.
$ go install github.com/jabbalaci/go-jsonpath/cmd/jpath@latest
Consider the following JSON file:
{
"a": 1,
"b": {
"c": 2,
"friends": [
{
"best": "Alice"
},
{
"second": "Bob"
},
[5, 6, 7],
[
{"one": 1},
{"two": 2}
]
]
}
}
jpath will traverse it recursively and print every path / value pair:
$ jpath samples/short.json
root["a"] => 1
root["b"]["c"] => 2
root["b"]["friends"][0]["best"] => "Alice"
root["b"]["friends"][1]["second"] => "Bob"
root["b"]["friends"][2][0] => 5
root["b"]["friends"][2][1] => 6
root["b"]["friends"][2][2] => 7
root["b"]["friends"][3][0]["one"] => 1
root["b"]["friends"][3][1]["two"] => 2
The idea is to combine its usage with the Unix command
grep
. For instance, what's the path of the key that
leads to Bob?
$ jpath samples/short.json | grep -i bob
root["b"]["friends"][1]["second"] => "Bob"
Then simply paste it in your application (Python example):
>>> import json
>>>
>>> f = open("samples/short.json")
>>> d = json.load(f)
>>> d
{'a': 1, 'b': {'c': 2, 'friends': [{'best': 'Alice'}, {'second': 'Bob'}, [5, 6, 7], [{'one': 1}, {'two': 2}]]}}
>>> d["b"]["friends"][1]["second"]
'Bob'
>>>