實用工具
輸入
結果
結果會顯示在這裡。API 測試工具、AWS Step Functions、日誌處理管線和 kubectl 的 -o jsonpath 輸出,都用 JSONPath 從 JSON 中取值,而運算式很容易出現細微的錯誤。貼上文件、輸入運算式,就能看到它究竟選中了什麼:每個符合項目都附有正規化路徑和 JSON Pointer,讓你看出是哪個陣列的哪個元素符合,而不只是知道值是什麼。底層使用 JSONPath-Plus,這是使用最廣泛的 JavaScript 實作,在原始語法之上加入了篩選器、遞迴下降和 ^ 父節點運算子。
它是怎麼運作的
- 像 $[?(@.stargazers_count > 100000)] 這樣的篩選器在 JSONPath-Plus 的安全求值器中執行,它會自行解譯運算式,而不是當成 JavaScript 執行。
- 每個符合項目都附有方括號表示法的路徑,以及 RFC 6901 JSON Pointer,可直接用於 JSON Patch 操作。
- 選擇「只顯示值」會得到扁平的結果陣列,選擇「只顯示路徑」則得到位置清單。
- 空陣列不是錯誤:它代表運算式有效,只是沒有選中任何東西。
你的資料去了哪裡
哪也沒去。本工具完全在你的瀏覽器裡執行:你貼上的文字由頁面處理,不會傳輸到任何伺服器,也不會寫進任何紀錄。
本工具免費且免登入,執行結果只存在於你目前的頁面裡,不會被儲存到任何地方。
它要花多少
本工具完全免費,不需要登入,也不消耗點數。
常見問題
- 這和 RFC 9535 的 JSONPath 一樣嗎?
- 大致相同,但不完全一樣。RFC 9535 在 2024 年才將 JSONPath 標準化,遠晚於 JSONPath-Plus 的誕生,兩者的分歧在於篩選器語法:RFC 寫成 $[?@.price < 10] 並有自己的一套函式,JSONPath-Plus 則使用原始的 $[?(@.price < 10)] 形式。一般路徑、萬用字元、切片和遞迴下降的行為都相同。
- 在這裡能用的運算式,在 kubectl 裡也能用嗎?
- 簡單的可以。kubectl 將自己的 JSONPath 方言包在一層範本語法裡——kubectl get pods -o jsonpath='{.items[*].metadata.name}'——所以去掉大括號、在前面加上 $,就能在這裡測試路徑的部分。篩選器和函式在兩者之間有所不同,超出基本選取的部分,請直接在 kubectl 中確認。
- 為什麼我的篩選器出現讀取屬性相關的錯誤?
- 安全求值器允許對目前節點進行屬性存取、比較和邏輯運算,但拒絕方法呼叫、建構函式,以及其他任何會執行任意程式碼的寫法。這是刻意的設計:從別處貼來的運算式,永遠不應該有機會在你的瀏覽器中執行。
- .. 和 * 有什麼不同?
- * 符合某個節點的所有直接子節點;.. 則會向下走訪其下的每一層。$..name 會找出任何深度的 name 鍵,而 $[*].name 只往頂層陣列內看一層。對大型文件使用遞迴下降,回傳的符合項目可能遠比你預期的多。
背後的開源專案
本工具執行在 JSONPath-Plus/JSONPath 之上,以 MIT 授權發布。如果你需要在自己的程式裡實作同樣的能力,直接用這個函式庫。
JSONPath-Plus/JSONPath也常被稱作
- jsonpath 測試
- jsonpath 線上
- jsonpath tester
- jsonpath 篩選運算式
- jsonpath 語法
- jsonpath 線上解析