這是什麼
JSONPath 是 JSON 的查詢語言,作用類似 XML 的 XPath。像 $.store.book[*].title 這樣的運算式會深入文件,選出你關心的值。這個工具用你輸入的 JSONPath 運算式查詢貼上的 JSON,把所有符合結果列成一個 JSON 陣列:可以只看符合的值、只看它們的正規化路徑(例如 $['store']['book'][0]['title']),或兩者一起看。
工具遵循 2024 年發布的 IETF 標準 RFC 9535,結果與 JavaScript、Java、Python、Go 等語言的新版 JSONPath 函式庫一致。適合在寫進程式碼前先試運算式、排查篩選條件為什麼查不到資料,或從龐大的 API 回應中取出幾個欄位。
怎麼用
- 把 JSON 貼到 JSON 輸入框,或上傳
.json檔案,也可以按 範例 載入經典的書店文件。 - 在 JSONPath 運算式 中輸入查詢,符合結果會隨輸入即時更新。
- 在 顯示 中選擇:值、路徑,或路徑和值。
- 複製或下載結果。運算式有語法錯誤時,會指出解析失敗的字元位置。
語法速查
| 運算式 | 意義 |
|---|---|
$ | 文件根節點 |
.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 會上傳到伺服器嗎?
不會。運算式的解析與求值都由頁面本身的程式碼在瀏覽器中完成,不會上傳任何內容。