JSONPath オンラインテスト

ローカル処理
app.jsonpath.view

次の方法でも #data={"name":"Ada"} または #url=... データを流し込めます。読み取り後はアドレスバーから削除されます。

JSONPath は $.store.book[*].title のようなパスで文書からノードを抜きます。読み取り専用で原文は変えず、大きなレスポンスからリストや入れ子フィールドを取るのに向いています。API テストのアサーションや、ログから特定階層の配列を抜くときは、多層アクセスを手書きするより短くなります。

パス抽出

対応: $ ルート、 .. 再帰、スライス、フィルタ。ワイルドカード [*] で配列の各要素の同名フィールドを一度に取れます。

よく使うテンプレートがあり、先に選んでから自分のパスへ直せます。

式のデバッグ

パスを1行変えるとすぐ結果が見え、一時スクリプトより速いです。式の誤りや一致なしははっきり示されます。

ツリーページからパスをコピーして検証すると、綴りミスを減らせます。

次の一歩

抜いた配列は CSV 変換や型生成へ回せます。パスが正しいことを確認してからテストコードや jq スクリプトへ書いてください。

このページは原文を変えず、読み取り専用の調査に向いています。

データ
{
  "store": {
    "book": [
      { "title": "Sayings of the Century", "price": 8.95 },
      { "title": "Slightly Bad", "price": 12.99 }
    ]
  }
}
式と結果
$.store.book[*].title

["Sayings of the Century", "Slightly Bad"]
CSS セレクタに似ていますか?

考え方は似ています。ループで値を取るのではなく、パスで「どの部分か」を記述します。

フィルタはどう書きますか?

よくある書き方は $..book[?(@.price<10)] のような条件です。構文はこのページのエンジンに従います。

結果がないのはなぜ?

パスと実際の構造の不一致がほとんどです。ツリーページでキー名、配列添字、オブジェクトか配列かを照合してください。

元の JSON は変わりますか?

しません。一致した値のリストだけ出力します。

おすすめの手順

  1. 完全なレスポンスを貼り、 $ から浅いパスを書いて少しずつ深くします。
  2. テンプレートでよくある式を入れ、「実行」で一致件数を見ます。
  3. 結果を確認したら、式をテストやスクリプトへコピーします。
  4. 一致したオブジェクト配列を表にしたいときは、CSV / Excel ページへ進みます。

ライブラリごとに JSONPath の細部は少し違います。このページで通った式を基準に、使用言語の実装と照合してください。