メインコンテンツにスキップ

JSON Path Tester

JSONPath式をテストし、JSONデータから必要な値を抽出するツールです。APIレスポンスの解析とデータ分析に必須のツール!

Result will appear here...

Common Patterns

Root
$
Root object
All Books
$.store.book[*]
All books in store
First Book
$.store.book[0]
First book
Last Book
$.store.book[-1]
Last book
Book Titles
$.store.book[*].title
All book titles
Books < $10
$.store.book[?(@.price < 10)]
Books cheaper than $10
Books with ISBN
$.store.book[?(@.isbn)]
Books with ISBN
All Prices
$.store..price
All prices (recursive)

Syntax Guide:

  • $ - Root object
  • @ - Current object
  • . or [] - Child operator
  • .. - Recursive descent
  • * - Wildcard
  • [start:end] - Array slice
  • [?(<expr>)] - Filter expression

JSONPathとは?

JSONPathは、JSONデータ構造内の値をクエリするための式言語です。XPathがXMLで行うように、JSONPathはJSONから特定のデータを抽出できるようにします。

主要な構文

基本演算子

演算子説明
$ルートオブジェクト$
@現在のオブジェクト(フィルタ内)@.price
. または []子要素$.store.book
..再帰的検索$..price
*ワイルドカード$.store.*
[n]配列インデックス$.store.book[0]
[start:end]配列スライス$.store.book[0:2]
[?(<expr>)]フィルタ式$..book[?(@.price < 10)]

配列のインデックス指定

// 最初の要素
$.store.book[0]

// 最後の要素
$.store.book[-1]

// 範囲(0からインデックス2の前まで)
$.store.book[0:2]

// すべての要素
$.store.book[*]

フィルタ式

// 価格が10未満の本
$.store.book[?(@.price < 10)]

// ISBNがある本
$.store.book[?(@.isbn)]

// カテゴリがfictionの本
$.store.book[?(@.category === 'fiction')]

// タイトルに特定の単語が含まれる本
$.store.book[?(@.title.includes('Moby'))]

実際の使用例

APIレスポンスからのデータ抽出

// APIレスポンス
{
"users": [
{ "id": 1, "name": "John", "active": true },
{ "id": 2, "name": "Jane", "active": false },
{ "id": 3, "name": "Bob", "active": true }
]
}

// アクティブなユーザーのみを抽出
$.users[?(@.active === true)]

// すべてのユーザー名
$.users[*].name

ネストされたデータの探索

// 複雑なJSON
{
"company": {
"departments": [
{
"name": "Engineering",
"employees": [
{ "name": "Alice", "salary": 100000 },
{ "name": "Bob", "salary": 90000 }
]
},
{
"name": "Sales",
"employees": [
{ "name": "Charlie", "salary": 80000 }
]
}
]
}
}

// すべての従業員の給与
$..employees[*].salary

// 給与が90000以上の従業員
$..employees[?(@.salary >= 90000)]

配列データの処理

// Eコマースデータ
{
"products": [
{ "name": "Laptop", "price": 1000, "stock": 5 },
{ "name": "Mouse", "price": 20, "stock": 0 },
{ "name": "Keyboard", "price": 50, "stock": 10 }
]
}

// 在庫がある製品
$.products[?(@.stock > 0)]

// 価格範囲(20〜100)
$.products[?(@.price >= 20 && @.price <= 100)]

ユースケース

1. APIテストとデバッグ

// GraphQLレスポンスからエラーメッセージを抽出
$.errors[*].message

// REST APIページネーションデータ
$.data.items[*]

2. データ分析

// 特定条件のデータフィルタリング
$..transactions[?(@.amount > 1000)]

// 統計データの収集
$..metrics[*].value

3. 設定ファイルの解析

// 特定の環境設定を抽出
$.environments[?(@.name === 'production')]

// 有効化された機能フラグ
$.features[?(@.enabled === true)].name

4. ログ分析

// エラーログのみをフィルタリング
$.logs[?(@.level === 'error')]

// 特定の時間帯のログ
$.logs[?(@.timestamp > 1234567890)]

比較演算子

JSONPathフィルタで使用可能な演算子:

  • === - 等しい
  • !== - 等しくない
  • < - より小さい
  • <= - 以下
  • > - より大きい
  • >= - 以上
  • && - AND
  • || - OR

使用のヒント

1. 段階的なテスト

複雑なパスは段階的に分けてテスト:

// ステップ1: $.store
// ステップ2: $.store.book
// ステップ3: $.store.book[*]
// ステップ4: $.store.book[*].title

2. 再帰的検索の活用

構造が不明な場合は .. を使用:

// すべてのpriceフィールドを検索
$..price

3. フィルタの組み合わせ

複数の条件を組み合わせる:

$..book[?(@.price < 10 && @.category === 'fiction')]

注意事項

  • JSONPath式は大文字と小文字を区別します
  • フィルタ式内では @ を使用して現在のオブジェクトを参照します
  • 配列スライスはPythonと同様に動作します(開始を含み、終了を含まない)
  • 実装によって構文が若干異なる場合があります

関連ツール

追加リソース