JSONPath
Proxyman で JSONPath を使い、JSON のリクエスト/レスポンス本文をクエリします。構文、フィルタ演算子、そのままコピーして使えるパスの例を解説します。
1. 概要
JSONPath は、JSON データをすばやく絞り込むためのクエリ言語です。Proxyman では、JSON タブ、Treeview タブ、カスタムカラムで使用できます。

2. 使い方
- Request または Response パネルで + ボタンをクリックします
- JSON を選択して JSON タブを追加します
- JSON 本文の上にフィルタバーが表示されます
- JSON Path または jq のフィルタモードを選択します
3. 構文
| 演算子 | 説明 |
|---|---|
$ | クエリの起点となるルート要素です。すべてのパス式はここから始まります。 |
@ | フィルタの述語で処理中の現在のノードです。 |
* | ワイルドカードです。名前または数値が必要な箇所であればどこでも使用できます。 |
.. | 深い階層まで走査します。名前が必要な箇所であればどこでも使用できます。 |
.<name> | ドット記法による子要素 |
['<name>' (, '<name>')] | ブラケット記法による子要素(複数指定可) |
[<number> (, <number>)] | 配列のインデックス(複数指定可) |
[start:end] | 配列のスライス演算子 |
[?(<expression>)] | フィルタ式。式は真偽値に評価される必要があります。 |
フィルタ演算子
フィルタは、配列を絞り込むために使う論理式です。典型的なフィルタは [?(@.age > 18)] のような形式で、@ は処理中の現在の要素を表します。
| 演算子 | 説明 |
|---|---|
| == | 左辺が右辺と等しい(1 と '1' は等しくないので注意してください) |
| != | 左辺が右辺と等しくない |
| < | 左辺が右辺より小さい |
| <= | 左辺が右辺以下である |
| > | 左辺が右辺より大きい |
| >= | 左辺が右辺以上である |
| =~ | 左辺が正規表現に一致する [?(@.name =~ /foo.*?/i)] |
| in | 左辺が右辺に存在する [?(@.size in ['S', 'M'])] |
| nin | 左辺が右辺に存在しない |
| subsetof | 左辺が右辺の部分集合である [?(@.sizes subsetof ['S', 'M', 'L'])] |
| anyof | 左辺と右辺に共通する要素がある [?(@.sizes anyof ['M', 'L'])] |
| noneof | 左辺と右辺に共通する要素がない [?(@.sizes noneof ['M', 'L'])] |
| size | 左辺(配列または文字列)のサイズが右辺と一致する |
| empty | 左辺(配列または文字列)が空である |
パスの例
次の JSON データを例に説明します。
{
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{
"category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{
"category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}
| JsonPath | 結果 |
|---|---|
| $.store.book[*].author | すべての書籍の著者 |
| $..author | すべての著者 |
| $.store.* | 書籍と自転車のすべての要素 |
| $.store..price | すべての商品の価格 |
| $..book[2] | 3 番目の書籍 |
| $..book[-2] | 後ろから 2 番目の書籍 |
| $..book[0,1] | 最初の 2 冊の書籍 |
| $..book[:2] | インデックス 0(含む)から 2(含まない)までのすべての書籍 |
| $..book[1:2] | インデックス 1(含む)から 2(含まない)までのすべての書籍 |
| $..book[-2:] | 最後の 2 冊の書籍 |
| $..book[2:] | インデックス 2(含む)から末尾までのすべての書籍 |
| $..book[?(@.isbn)] | ISBN 番号を持つすべての書籍 |
| $.store.book[?(@.price < 10)] | 価格が 10 未満のすべての書籍 |
| $..book[?(@.price <= $['expensive'])] | 「expensive」ではないすべての書籍 |
| $..book[?(@.author =~ /.*REES/i)] | 正規表現に一致するすべての書籍(大文字と小文字を区別しない) |
| $..* | すべての要素を取得 |
| $..book.length() | 書籍の数 |