JSONPath 式を評価し、一致した値とその位置を一覧で確かめます
JSONと式を入れると、一致した値とパスがここに出ます。
JSONPath は、JSON の中から特定の値を取り出すための式です。XML の XPath を JSON に置き換えたもので、2007 年に Stefan Goessner が提案した記法が事実上の共通仕様になっています。$ がJSON全体(ルート)を指し、そこから . や [] でたどっていきます。
たとえば $.store.book[0].title は「store の中の book 配列の 0 番目の title」です。配列の添字は 0 から始まります。1 から数えると1つずれるので、最初に間違えやすいのはここです。
| 記法 | 意味 |
|---|---|
$ | ルート。式は必ずここから始める |
.name / ['name'] | キーで1階層下りる。記号や空白を含むキーは ['...'] を使う |
[0] / [-1] | 配列の添字。負の値は末尾から数える |
[1:3] | 配列の範囲。1 以上 3 未満(3 は含まない) |
[*] / .* | その階層の全要素 |
..name | 再帰下降。どの深さにあっても name を全部拾う |
[?(@.k > 10)] | フィルタ。@ は「いま見ている要素」。== != < <= > >= が使える |
[?(@.k)] | キー k を持つ要素だけ(存在チェック) |
[0,2] / ['a','b'] | 複数をまとめて指定(合併) |
次の3つはこのツールでは使えません。入力すると理由付きのエラーが出ます。黙って空の結果を返すより、書けないと分かるほうが直しやすいためです。
[0:10:2] のような3つ目の値)[(@.length-1)])。任意のJavaScriptを評価しないため&& や ||)。比較は1つだけ書けます.. は先頭から深さ優先でたどります。上のサンプルで $..price を評価すると 8.95, 12.99, 8.99, 22.99, 19.95 の順に出ます。book 配列が bicycle より先に書かれているので、bicycle の 19.95 が最後です。JSONの記述順がそのまま結果の順になる、と考えて問題ありません。
評価はすべてブラウザ内のJavaScriptで行っています。貼り付けたJSONがサーバーへ送られることはありません。記法の出典は Stefan Goessner の JSONPath(https://goessner.net/articles/JsonPath/ )です。
JSON Pointer(RFC 6901)は1つの値を正確に指す仕組みで、/store/book/0/title のように書きます。ワイルドカードもフィルタもありません。JSONPath は複数の値をまとめて取り出すための記法で、$..price のように「どこにあっても全部」という指定ができます。1点を指すなら Pointer、条件で抜き出すなら JSONPath です。
再帰下降といって、その位置から下のすべての階層を順に見て、key を持つ要素をすべて拾います。深さが分からないデータや、同じキーが複数の階層に散らばっているデータで使います。件数が想定より多いときは、拾いすぎていないかを結果のパス列で確認してください。
シングルクォートかダブルクォートで囲みます。$.store.book[?(@.category == 'fiction')] のように書きます。クォートを付けないと数値やキーワードとして解釈され、エラーになります。
いいえ。JSONの解析もJSONPathの評価も、すべてブラウザ内のJavaScriptで行っています。本番データを貼っても外部には出ません。