logo
GeekFormat

JSONPath オンラインクエリ

オンラインJSONPathクエリツール。$.propertyによるプロパティアクセス、[n]による配列インデックス、[*]によるワイルドカード、[start:end]による配列スライス、?()による条件フィルタリング式をサポート。JSONとパスを入力するとリアルタイムでクエリを実行(400msデバウンス)。JSON整形ビューと整列テーブルビューの2つのモードを切り替え可能。8つのよく使われるパスの例を内蔵し、JSON構文エラーは自動修正可能。JSONファイルのアップロード、クエリ結果のダウンロード、キーボードショートカット操作、ローカル履歴の自動保存に対応。左右パネルの幅調整、フォントサイズ切り替えも可能。すべての解析とクエリはブラウザ内で完全にローカル実行され、データは一切アップロードされません。QAテスターのAPIアサーション、バックエンド開発者のログフィールド抽出、フロントエンド開発者のAPI検証作業に最適です。

関連おすすめ

ユースケース

  • QAテストエンジニアがAPI自動テストを作成する前に、JSONPathアサーション式が対象フィールドを正しく抽出できるかを対話的に検証
  • バックエンド開発者が複雑にネストされたAPIレスポンスをデバッグする際に、深い位置のフィールドパスを素早く特定、手動で階層を展開する必要がない
  • フロントエンド開発者がサードパーティAPIを連携する際に、返されるJSON構造を素早く検証し、フィールドパスを確認してからコードでの値取得を実装
  • 運用/バックエンドエンジニアがELK、Jaegerログ内のJSONフィールドを調査する際に、特定のフィールド値を素早く抽出して問題を分析
  • データ分析の前にJSON APIレスポンスデータに対して条件フィルタリングを行い、条件に一致するレコードを抽出してから後続の処理を実行
  • Postman、JMeter、RestAssuredなどのツールでJSON Extractorを設定する前に、ローカルで式をデバッグしてAPIを繰り返し実行する手間を削減
  • バッチJSONデータを処理する際に、必要なフィールドのサブセットを素早く抽出して新しいデータ構造を生成
  • JSONPath構文を学習する際に、リアルタイムフィードバックでさまざまな構文の書き方をすばやく検証し、理解を深める
  • クローラー開発のデバッグ時に、JSON APIレスポンスからのデータ抽出パスが正しいことを検証
  • APIドキュメント作成時に、ツールでサンプルJSONのパスを検証してからドキュメントの例に記載
  • モバイル開発でのAPIデバッグ時に、スマートフォンで一時的にツールを開いてフィールド抽出をすばやく検証、PCを探す必要がない
  • コードレビュー時に、チームメンバーが書いたJSONPath式が正しく期待値を取得できるかを確認

特徴

  • 実用的な構文をフルサポート:$.propertyプロパティアクセス、[n]配列インデックス([-1]で最後の要素を取得)、[*]ワイルドカード、[start:end]配列スライス、?()条件フィルタリング(==/!=/>/</>=/<=の比較演算子に対応)
  • リアルタイムクエリ:JSONまたはパスを入力すると400msデバウンスで自動実行、ボタンをクリックする必要なく結果が即座に更新
  • JSON/テーブルデュアルビュー:クエリ結果を整形JSONビューと整列テーブルビューで切り替え表示。オブジェクト配列の結果は自動的に列揃えで表示され、素早い閲覧が可能
  • よく使う例を内蔵:ドロップダウンメニューに8つの定番パス例(ルートオブジェクト、すべての書籍、最初/最後の項目、スライス、価格抽出、条件フィルタリングなど)を用意、クリックで即座に入力
  • 構文ヘルプポップアップ:ワンクリックでヘルプパネルを開き、6つのコア構文早見表とキーボードショートカットの説明を表示。Mac/Windowsに自動的に対応したショートカット表示
  • スマートエラー修復:JSONフォーマットエラー時に修復可能な問題を自動検出し、カンマ不足、引用符の不一致、末尾のカンマなどのよくあるJSON構文エラーをワンクリックで修復
  • ワンクリック整形:JSON整形機能を内蔵し、Shift+Cmd/Ctrl+Fで入力JSONをすばやく整形、階層構造を読みやすく整列
  • ファイルアップロード/ダウンロード:.json/.txtファイルをアップロードして直接内容を読み込み、クエリ結果をquery-result.jsonとしてワンクリックでダウンロード
  • キーボードショートカット:Shift+Cmd/Ctrlコンビネーションキーで素早く操作(Enterでクエリ、Fで整形、Oでアップロード、Dでダウンロード、Kでクリア)、作業効率が向上
  • ローカル履歴:直近200件の入力をブラウザのlocalStorageに自動保存、次回開くときに前回の内容を自動的に復元、再ペーストの手間が不要
  • パネル幅調整可能:PCでは中央のセパレータをドラッグして左右パネルの幅比率を調整でき、JSONの構造に合わせて柔軟にスペースを配分
  • フォントサイズ切り替え:14px/16pxの2種類のコードフォントサイズに対応、長時間のデバッグ作業でも目に優しい
  • 等幅コードエディタ:CodeMirrorベースで構文ハイライト、行番号表示、括弧の一致機能を実現、プロフェッショナルでスムーズな編集体験
  • 完全ブラウザローカル処理:JSON解析、パスマッチング、条件フィルタリングはすべてローカルJavaScriptで実行、データはサーバーにアップロードされず、機密性の高いAPIデータやログも安心して使用可能

使い方

  1. ツールバーの「例」ボタンをクリックしてサンプルJSONを読み込んですばやく体験するか、独自のJSONデータを左側エディタに貼り付け/アップロード
  2. 上部のクエリボックスにJSONPath式を入力(右側の「例」ボタンをクリックして定番パスを選択可能)。$で始めても、直接プロパティパスを書いてもOK
  3. 入力後400msで自動的にクエリが実行され、右側に結果が即座に表示されます。「JSONビュー」で整形された構造を見るか、「テーブルビュー」で整列されたリストを見るかを切り替え可能
  4. 式が正しいことを確認したら、コピーまたはダウンロードボタンをクリックして結果を保存。JSONPath式をPostman/JMeterなどのツールにコピーして使用することも可能

よくある質問

どのようなJSONPath構文をサポートしていますか?

以下の実用的な構文をサポートしています:①$.propertyまたは['property']でオブジェクトプロパティにアクセス;②[n]でインデックスによる配列要素へのアクセス(nは0から始まり、[-1]は最後の要素を表します);③[*]または.*ワイルドカードで、配列のすべての要素またはオブジェクトのすべてのプロパティ値にマッチ;④[start:end]配列スライスで、指定範囲の要素を取得;⑤?(@.field op value)条件フィルタリングで、==/!=/>/</>=/<=の6種類の比較演算子に対応し、文字列と数値の比較をサポート。

配列から条件を満たす要素を抽出するにはどうすればよいですか?

?()条件フィルタリング式を使用します。例えば$.store.book[?(@.price < 80)]は価格が80未満の書籍をフィルタリングし、$.store.book[?(@.category == 'プログラミング')]はカテゴリがプログラミングの書籍をフィルタリングします。プロパティ名の前には@.を付けて現在の要素を表す必要があり、文字列値はシングルクォートまたはダブルクォートで囲んでください。

配列の最初/最後/最初のN個の要素を取得するにはどうすればよいですか?

[0]で最初の要素、[-1]で最後の要素、[0:2]でインデックス0から1の最初の2要素を取得します(スライスは開始位置を含み終了位置を含まない半開区間です)。例えば$.store.book[0:3]は最初の3冊の書籍を取得します。

テーブルビューとJSONビューの違いは何ですか?

JSONビューは標準的なフォーマットでインデントされたJSON結果を表示し、完全なネスト構造を保持するため、完全なデータをコピーしたり閲覧したりするのに適しています。テーブルビューはオブジェクト配列の結果を自動的にプロパティ列ごとに整列して表示し、Excelのテーブルのような表示になるため、複数のレコードを閲覧する際により直感的で、全行のフィールド値の違いを素早く比較できます。単純型の結果もキーと値のペアで整列表示されます。

JSON解析エラーが表示された場合はどうすればよいですか?

入力したJSONに構文エラー(カンマの不足、引用符の不一致、余分な末尾のカンマ、シングルクォートの使用など)がある場合、エラー箇所が赤色で表示され、「エラーを修復」ボタンが表示されます。クリックすると一般的なJSONの問題を自動的に修復します。Shift+Cmd/Ctrl+Fで先に整形を試すこともできます。整形でエラーが発生する場合はJSONに問題があるため、修復後にクエリを実行してください。

クエリを実行しても何も結果が表示されません

以下を確認してください:①JSONが有効かどうか(整形ボタンをクリックして検証できます);②JSONPathのパスのスペルが正しいか、プロパティ名の大文字小文字は区別されます;③パスが存在するか(存在しないプロパティにアクセスするとエラーになります);④フィルタリング式の構文が正しいか、括弧と引用符が対応しているか。

内蔵の例はどのように使用しますか?

クエリボックスの右側にある「例」ボタン(下向き矢印)をクリックすると、ドロップダウンメニューに8つのよく使われるパスの例が表示されます。いずれかの例をクリックするとパス式が自動的に入力されます。まず「例」ボタンをクリックしてサンプルJSONデータ(書店データ)を読み込み、サンプルパスで動作を確認することをお勧めします。

ショートカットキーは何がありますか?

すべてShift+Cmd(Mac)/Shift+Ctrl(Windows)のコンビネーションキーを使用します:Shift+Enterでクエリ実行、Shift+FでJSON整形、Shift+Oでファイルアップロード、Shift+Dで結果ダウンロード、Shift+Kですべての内容をクリア。ヘルプボタン(?アイコン)からいつでも完全なショートカット一覧を確認できます。

条件フィルタリングではどの比較演算子が使用できますか?

6種類の比較演算子をサポートしています:==(等しい)、!=(等しくない)、>(より大きい)、<(より小さい)、>=(以上)、<=(以下)。数値の比較は数値の大小で行われ、文字列の比較は辞書順で行われます。文字列値はシングルクォートまたはダブルクォートで囲む必要があります。

パスは$で始める必要がありますか?

必須ではありません。ツールが先頭の$.を自動的に補完するため、store.book[0]と直接入力しても正常に動作します。システムが自動的に$.store.book[0]に正規化して実行します。ただし、標準JSONPath仕様ではルートノードを表すために$で始めることが推奨されています。

以前に入力した内容が次回開いたときにも残っているのはなぜですか?

ツールは直近に入力したJSONをブラウザのローカルストレージ(localStorage)に自動的に保存します(最大200件の履歴)。次回ページを開いたときに前回の内容を自動的に復元するため、APIレスポンスを毎回再ペーストする必要がありません。クリアボタン(Shift+K)で現在の内容を消去できます。

JSONファイルをアップロードできますか?

はい、できます。ツールバーの「アップロード」ボタンをクリックするかShift+Oを押して、ローカルの.jsonまたは.txtファイルを選択すると、ファイルの内容が自動的に読み込まれて入力欄に設定されます。クエリ結果は「ダウンロード」ボタンまたはShift+Dでquery-result.jsonファイルとしてローカルに保存できます。

Postman/JMeterのAPIアサーションに使用するのに適していますか?

非常に適しています。APIデバッグ時に、APIレスポンスのJSONをツールに貼り付け、JSONPath式を対話的に調整してクエリ結果が期待通りになることを確認してから、検証済みの式をPostmanのテストスクリプト、JMeter JSON Extractor、自動テストフレームワークにコピーして使用できます。オンラインでのデバッグ時間を大幅に削減できます。

入力したAPIデータがサーバーにアップロードされることはありますか?

ありません。JSON解析、JSONPathパスマッチング、条件フィルタリング、テーブルフォーマットはすべてブラウザ内でJavaScriptによりローカル実行され、入力したJSONの内容がネットワークを通じていかなるサーバーにも送信されることはありません。ページを閉じた後はローカルのlocalStorageにのみ保存され(クリア可能)、機密性の高いビジネスデータやリリース前のAPIデータも安心して使用できます。

ワイルドカード[*]はオブジェクトにも使用できますか?

はい、使用できます。[*]を配列に使用すると配列のすべての要素を返し、オブジェクトに使用すると(例えば$.store.*)オブジェクトのすべてのプロパティ値からなる配列を返します。$.store.book[*].authorのようにプロパティと組み合わせて使用すると、配列内のすべての要素のauthorプロパティを抽出し、著者のリストを作成できます。

JSONPathとデータ抽出について

JSONPathはJSONドキュメントから指定されたデータを抽出するためのパス式言語で、XMLに対するXPathのような役割を果たします。API開発とテストでは、APIが返すJSONは階層が深くネストが多いことが多く、手動で展開して階層をたどってフィールドを探すのは非効率でエラーが発生しやすくなります。JSONPathを使用すると、1行の式で対象データを正確に特定して抽出できるため、APIデバッグ、自動テスト、データ抽出のシーンで開発者にとって必須のツールです。

JSONPathのコア設計思想は、パス記号を使用してデータの位置を記述することです:$はルートノード(JSONオブジェクト全体)を表し、ドット.または角括弧[]で子プロパティにアクセスし、[n]でインデックスにより配列要素にアクセスし、[*]ですべての要素にマッチし、[start:end]で配列の一部を切り出し、?()で条件により配列要素をフィルタリングします。この構文はシンプルですが表現力が高く、大多数のデータ抽出ニーズをカバーできます。

条件フィルタリングはJSONPathの最も実用的な機能の1つで、?(@.フィールド 演算子 値)の形式でフィルタリングロジックを記述します。例えば?(@.price < 100)はpriceフィールドが100未満の配列項目をフィルタリングし、?(@.status == 'active')はステータスがactiveのレコードをフィルタリングします。@は現在走査中の配列要素を表し、@.fieldで現在の要素の特定のフィールドにアクセスできるため、条件フィルタリングが非常に直感的になります。

なぜコード内で直接デバッグするのではなく、専用のJSONPathツールが必要なのでしょうか?API自動アサーションやデータ抽出コードを書くとき、JSONPathを間違えると、APIを繰り返し実行し、ログを出力し、コードを修正して再実行する必要があり、非常に効率が悪くなります。オンラインツールでの対話的なデバッグでは秒単位で結果を確認でき、式を調整すると即座にフィードバックが得られるため、正しいことを確認してからコードにコピーすることで、デバッグ時間を大幅に節約できます。

テーブルビューは多くの類似ツールと異なる本ツールの実用的な機能です:クエリ結果がオブジェクト配列の場合(これは最も一般的なAPIレスポンスのリスト形式です)、すべてのオブジェクトのキーを自動的に抽出してヘッダーとし、各行のデータを整列して表示します。Excelテーブルのような閲覧体験で、インデントされたJSON内で行ごとにフィールド値を探すよりもはるかに直感的で、複数のレコードのフィールドの違いを一目で比較できます。

JSONエラーの自動修復も実際の開発シーンを想定して設計された機能です:ログ、ドキュメント、チャットウィンドウからコピーしたJSONにはよく問題があります——シングルクォートが使われていたり、カンマが不足していたり、最後の項目に余分な末尾のカンマがあったり、プロパティ名に引用符がなかったりなど。手動で修復するのは面倒ですが、ツールの自動修復機能はほとんどの一般的なJSONフォーマットの問題をワンクリックで処理でき、1文字ずつエラーを探す必要がありません。

ローカル履歴は高頻度での使用を想定して最適化された細かな機能です:開発者は同じAPIを繰り返しデバッグすることが多く、ツールを開くたびにJSONを再ペーストするのは面倒です。ツールは直近の入力をブラウザのローカルストレージに自動的に保存し、次回開くときに前回の内容を自動的に復元します。200件の履歴があれば日常業務で十分に使用できます。すべてのデータは自分のブラウザ内にのみ存在し、アップロードされることはありません。

なお、本ツールがサポートしているのは実用的なコアJSONPath構文サブセット(プロパティアクセス、インデックス、ワイルドカード、スライス、条件フィルタリング)であり、日常の開発シーンの90%以上をカバーしています。再帰降下(..)、スクリプト式、複数条件の組み合わせなどの高度な構文には現在のところ対応していません。これらの高度な機能が必要なシーンでは、より完全な実装ライブラリを使用する必要がある場合があります。大多数のAPIデバッグとフィールド抽出のニーズには、現在の構文セットで十分対応でき、より軽量で高速です。

术语表

JSONPath
JSONデータから指定された部分を抽出するためのパス式言語。XMLに対するXPathのようなもので、パス記号を使用して対象データの位置を記述します。
ルートノード ($)
JSONPath式の開始点を表し、JSONドキュメント全体のルートオブジェクトまたはルート配列を指します。パスは$から始めることができますが、ツールは$を省略して直接パスを書くこともサポートしています。
現在ノード (@)
フィルタリング式内で使用され、現在走査中の配列要素を表します。@.fieldで現在の要素の指定されたフィールドにアクセスします。
プロパティアクセス (.property または ['property'])
オブジェクトの指定されたプロパティにアクセスするための2つの記述方法:ドット記法($.store.book)は簡潔で、角括弧と引用符を使った記法($['store']['book'])はプロパティ名に特殊文字が含まれる場合に適しています。
配列インデックス ([n])
位置によって配列要素にアクセスします。インデックスは0から始まり、[0]は最初の要素、[-1]は最後の要素を表します。
ワイルドカード ([*] または .*)
現在位置のすべての子項目にマッチします:配列に使用するとすべての要素を返し、オブジェクトに使用するとすべてのプロパティ値を返します。
配列スライス ([start:end])
配列の一部の要素を切り出します。開始位置を含み終了位置を含まない半開区間で、startを省略すると先頭から、endを省略すると末尾までを取得します。
条件フィルタリング (?())
条件によって配列要素をフィルタリングします。内部に比較式を記述し、==/!=/>/</>=/<=の6種類の比較に対応します。文字列値は引用符で囲む必要があります。
Postmanアサーション
Postman APIテストツールのTestsスクリプトで、JSONPathを使用してAPIレスポンスのフィールドを抽出してアサーション検証を行う、API自動テストの一般的な手法です。
デバウンス (Debounce)
入力が停止してからクエリ実行を遅延させる最適化技術(本ツールでは400ms)。キーを押すたびに再クエリが実行されるのを防ぎ、入力の滑らかさを向上させます。
CodeMirror
ブラウザベースのコードエディタコンポーネント。構文ハイライト、行番号表示、括弧の一致などのプロフェッショナルなコード編集機能を提供し、本ツールではJSON編集領域として使用しています。
ローカル処理
すべてのJSON解析とクエリロジックがユーザーのブラウザ内でJavaScriptにより実行され、データがサーバーにアップロードされないこと。高速かつ安全で、機密データの処理に適しています。

JSONPath コア構文早見表

本ツールがサポートするすべての構文:

構文説明例の結果(サンプル書店JSON)
$ルートオブジェクト、JSON全体を返す完全なstoreオブジェクト
$.store.book[0]book配列の最初の要素にアクセス(インデックスは0から始まる)JavaScript上級プログラミング の書籍
$.store.book[-1]配列の最後の要素にアクセスユーザーエクスペリエンスの要素 の書籍
$.store.book[*]ワイルドカード、配列のすべての要素を返す全3冊の書籍からなる配列
$.store.book[0:2]配列スライス、インデックス0から1を取得(半開区間)最初の2冊の書籍
$.store.book[*].author配列のすべての要素のauthorフィールドを抽出["田中","鈴木","佐藤"]
$.store.book[?(@.price < 80)]条件フィルタリング、price<80の書籍を抽出PythonとUXの2冊(価格79と59)
$.store.bicycle.colorドット記法でネストされたオブジェクトのプロパティにアクセス"赤色"

条件フィルタリング比較演算子

?()フィルタリング式でサポートされる演算子:

演算子意味
==等しい(数値と文字列に対応)?(@.category == 'プログラミング')
!=等しくない?(@.status != 'deleted')
>より大きい(数値比較)?(@.price > 100)
<より小さい?(@.price < 50)
>=以上?(@.age >= 18)
<=以下?(@.count <= 100)

キーボードショートカット一覧

すべてのショートカットは Shift + Cmd(Mac)/Ctrl(Windows) コンビネーションキーを使用:

操作MacショートカットWindowsショートカット
クエリ実行⇧ + ⌘ + EnterShift + Ctrl + Enter
JSON整形⇧ + ⌘ + FShift + Ctrl + F
ファイルアップロード⇧ + ⌘ + OShift + Ctrl + O
結果ダウンロード⇧ + ⌘ + DShift + Ctrl + D
内容をクリア⇧ + ⌘ + KShift + Ctrl + K

Privacy & Security

本JSONPathクエリツールのJSON解析、パスマッチング、条件フィルタリング、テーブルフォーマット処理はすべてブラウザ内でJavaScriptにより完全にローカル実行されます。入力したJSONデータ、クエリしたパス、返される結果がいかなるサーバーにもアップロードされることはなく、記録、キャッシュ、クラウドストレージに保存されることもありません。入力履歴はブラウザのローカルストレージ(localStorage)にのみ保存され(最大200件)、クリアボタンまたはブラウザデータの消去により削除できます。機密性の高いビジネスフィールド、リリース前のAPIデータ、本番環境のログを含んでいても安心して使用でき、データ漏洩のリスクは一切ありません。

Authoritative References

Troubleshooting

「パスが存在しないか、値がnull/undefinedです」と表示される

JSONPathパスが現在のJSON内で対応する値を見つけられないことを意味します。以下を確認してください:①プロパティ名のスペルと大文字小文字が正しいか(JSONは大文字小文字を区別します);②ネスト階層が正しいか、中間層が存在するか;③配列インデックスが範囲外でないか;④整形ボタンをクリックしてJSON構造が期待通りか確認してください。

「非配列オブジェクトに対してインデックス/スライス/フィルタリングを使用しようとしています」と表示される

配列ではない値に対して[]インデックス、[start:end]スライス、?()フィルタリングを使用していることを意味します。これらの操作は配列に対してのみ使用できます。パスの対応する位置が実際には配列か単一オブジェクトかを確認し、まず$ワイルドカードやルートパスで実際の構造を確認してください。

条件フィルタリングが期待した結果を返さない

以下を確認してください:①@の後にドットがあるか(@.fieldと書く必要があり、ドットを省略できません);②文字列値がシングル/ダブルクォートで囲まれているか(?(@.name == tanaka)は不正で、?(@.name == 'tanaka')と書く必要があります);③数値には引用符を付けないでください、付けると文字列比較になります;④比較演算子の両側に余分なスペースがないか。

「括弧が一致しません」と表示される

JSONPath式の角括弧[]またはフィルタリングの括弧()が正しく対応していないことを意味します。閉じ]または)が書かれているか確認してください、特に複数の角括弧がネストしている場合は各[に対応する]があることを確認してください。