DevToolPal
繁

JSONPath 線上測試

對 JSON 執行 JSONPath 查詢,列出所有符合的值和路徑,支援篩選運算式和函式(RFC 9535)。

本機處理,不會上傳

選項

顯示

JSON

0 字元 · 0 B

符合結果

0 字元 · 0 B

這是什麼

JSONPath 是 JSON 的查詢語言,作用類似 XML 的 XPath。像 $.store.book[*].title 這樣的運算式會深入文件,選出你關心的值。這個工具用你輸入的 JSONPath 運算式查詢貼上的 JSON,把所有符合結果列成一個 JSON 陣列:可以只看符合的值、只看它們的正規化路徑(例如 $['store']['book'][0]['title']),或兩者一起看。

工具遵循 2024 年發布的 IETF 標準 RFC 9535,結果與 JavaScript、Java、Python、Go 等語言的新版 JSONPath 函式庫一致。適合在寫進程式碼前先試運算式、排查篩選條件為什麼查不到資料,或從龐大的 API 回應中取出幾個欄位。

怎麼用

  1. 把 JSON 貼到 JSON 輸入框,或上傳 .json 檔案,也可以按 範例 載入經典的書店文件。
  2. 在 JSONPath 運算式 中輸入查詢,符合結果會隨輸入即時更新。
  3. 在 顯示 中選擇:值、路徑,或路徑和值。
  4. 複製或下載結果。運算式有語法錯誤時,會指出解析失敗的字元位置。

語法速查

運算式意義
$文件根節點
.name 或 ['name']物件的成員
[0]、[-1]陣列元素(負數從尾端數)
[1:3]、[::2]切片:起點、終點(不含)和步長
*所有成員或元素
..name任意深度的 name
[?@.price < 10]篩選條件為真的子節點,@ 代表目前項目

篩選運算式可以用 &&、||、! 組合條件,用 $ 與文件其他部分比較,也能呼叫函式:length(@.tags) > 2、count(@.items[*]) == 0,match(@.code, '[A-Z]{3}') 要求整個字串符合正規表示式,search(@.title, 'Ring') 只要字串中有一處符合即可。

範例

使用範例中的書店資料,下面的運算式選出價格低於 10 的書名:

$.store.book[?@.price < 10].title

結果是:

["Sayings of the Century", "Moby Dick"]

改成 $..book[?@.isbn].author 可列出有 ISBN 的書的作者,改成 $..price 則收集店內所有價格,包括腳踏車的價格。

常見問題

› 支援哪些 JSONPath 語法?

支援 RFC 9535 標準語法:點號與方括號成員名稱、萬用字元、陣列索引(包括負數索引)、切片、用 .. 遞迴搜尋、帶比較運算與 && || ! 的篩選運算式,以及 length()、count()、match()、search()、value() 五個函式。舊寫法 ?(@.price < 10) 也能用,因為括號只是分組。

› 為什麼查詢結果是空陣列?

空陣列表示運算式有效,但沒有符合的節點。請檢查成員名稱(區分大小寫),確認某個值是陣列還是物件;也可以先用 $..* 這類寬鬆的查詢並把「顯示」切到「路徑」,看看文件裡實際有什麼。

› 能用 [(@.length-1)] 這樣的指令碼運算式嗎?

不能。指令碼運算式會執行任意程式碼,也不屬於標準。請改用負數索引:[-1] 是最後一個元素,[-2:] 是最後兩個。

› 我的 JSON 會上傳到伺服器嗎?

不會。運算式的解析與求值都由頁面本身的程式碼在瀏覽器中完成,不會上傳任何內容。