🔍

JSONPath クエリツール

JSONPath 式を使用して JSON からデータをクエリおよび抽出

JSON 入力

JSONPath

例:$.store.book[0].title, $.store.book[*], $..author

JSONPath とは

JSONPath は JSON のクエリ言語で、XML の XPath に類似しています。パス式を使用して複雑な JSON 構造をナビゲートしてデータを抽出するための標準化された構文を提供します。JSONPath は $ をルートオブジェクトを表すために使用し、. を子アクセスに、[] を配列インデックスに、* をワイルドカードに、.. を再帰的降下に使用します。フィルター [?(@.property > value)]、配列スライス [start:end:step]、複数セレクターをサポートします。JSONPath は API テスト、データ変換、構成クエリ、JSON 操作タスクで広く使用されています。複雑な JavaScript コードを書くことなく、深くネストされた JSON から特定の値を抽出することを簡素化します。

機能

🔍

高度なクエリ構文

ワイルドカード (*)、再帰的降下 (..)、配列スライス ([start:end])、フィルター ([?(@.price < 10)])、複数パスセレクターを含む完全な JSONPath 構文をサポート
📋

パス式テンプレート

一般的なクエリ用の事前構築テンプレート:ルートアクセス ($)、直接子 ($.key)、配列項目 ($.arr[*])、フィルター項目 ($.arr[?(@.id)])、再帰検索 ($..key)

リアルタイムプレビュー

構文ハイライトされた JSON 入出力でクエリを即座に実行、一致パスを表示、結果数を表示し、ソース JSON で一致ノードをハイライト
💾

結果エクスポート

クエリ結果を JSON(配列または単一値)、表形式データの CSV、フォーマットされたテキストとしてエクスポート、ワンクリックコピーおよびダウンロードオプション付き

📋使用ガイド

1️⃣
JSON データ入力
クエリしたい JSON データを貼り付けまたはアップロード
2️⃣
JSONPath 記述
JSONPath 式を入力するか、一般的なパターンのテンプレートを使用
3️⃣
クエリ実行
クエリを実行して構文ハイライト付きの一致結果を確認
4️⃣
結果エクスポート
お好みの形式で抽出されたデータをコピーまたはダウンロード

📚技術紹介

📝JSONPath 構文

JSONPath 式は $(ルートオブジェクト)で始まり、ドット表記 ($.property) またはブラケット表記 ($['property']) を使用してアクセスします。子ノードは . セパレータ ($.store.book) を使用し、配列は [index] または [*] をすべての項目に使用します。配列スライス [start:end:step] は [0:3](最初の 3 項目)や [-1](最後の項目)のような範囲を抽出します。再帰的降下演算子 .. はすべてのレベルを検索:$..author はネストの深さに関係なくすべての author プロパティを見つけます。ユニオン演算子 [,] は複数の項目を選択:$[0,2,5] は特定の配列インデックスを取得します。

🔍フィルター式

フィルターは [?(@.condition)] 構文を使用して基準に一致する項目を選択します。@ は反復処理の現在のノードを表します。比較演算子:==、!=、<、<=、>、>=。論理演算子:&& (and)、|| (or)、! (not)。例:[?(@.price < 10)] は価格が 10 未満の項目を選択;[?(@.category == 'fiction' && @.price < 20)] は条件を組み合わせます。正規表現マッチング:[?(@.name =~ /pattern/)] は正規表現でフィルタリング。フィルターは階層全体の比較のために $ でルートを参照できます:[?(@.price < $.maxPrice)]。

🔧実装のバリエーション

JSONPath には構文にわずかな違いがある複数の実装があります:Goessner のオリジナル(JavaScript)、Jayway(Java)、jsonpath-ng(Python)。違いには、フィルター演算子(一部は @ vs $ を使用)、正規表現サポート、スクリプト式、関数拡張が含まれます。一部の実装は集約用に @.length、@.min()、@.max() などの関数を追加します。スクリプト式 [(@.price * @.quantity)] は計算を可能にします。親演算子 ^ と現在のパス ~ はコンテキストを提供します。サポートされている機能と構文の癖については、常にターゲット実装のドキュメントを確認してください。

🎯実用的なアプリケーション

JSONPath は API レスポンス解析で優れており、完全な逆シリアル化なしで REST API JSON レスポンスから特定のフィールドを抽出します。構成管理は JSONPath を使用してネストされた構成値をクエリおよび更新します。データ変換パイプラインは JSONPath を使用してソース JSON をターゲットスキーマにマップします。テストフレームワーク(Postman、REST Assured)は JSONPath アサーションを使用してレスポンス構造と値を検証します。ログ分析は JSON 形式のログから関連フィールドを抽出します。GraphQL と OpenAPI ツールはスキーマトラバーサルと検証に JSONPath を使用します。パフォーマンス:大規模 JSON の場合、ストリーミングパーサーまたはデータベース(MongoDB のクエリ構文、PostgreSQL の jsonb_path_query)を検討してください。

よくある質問

結果が空になるのはなぜですか?

パスが $ から始まっているか、キー名が正確か、配列インデックスが範囲内か確認してください。まずは単純なパスで段階的に検証しましょう。
💬

任意の深さでキーを検索するには?

再帰的降下演算子を使います:$..author は階層に関係なく author をすべて見つけます。
🔍

フィルターの書き方は?

[?(@.price < 10)] のように @ は現在の要素を示します。条件は && / || で組み合わせられます。
💡

空配列と null の違いは?

空配列は一致が無いこと、null は一致した値が null であることを意味します。元データとパスを確認してください。
📚

大きな JSON での性能対策は?

.. の多用を避け、範囲を絞ってからフィルタしてください。必要に応じてストリーミングやサーバー側処理を検討します。

🔗関連ドキュメント

📖JSONPath 仕様 - Goessner-オリジナル JSONPath 提案と構文定義
🔧JSONPath オンラインエバリュエーター-式ドキュメント付きインタラクティブ JSONPath テスター
🐍jsonpath-ng ドキュメント-拡張機能を備えた Python JSONPath 実装

User Comments

0 / 2000
Loading...