實用工具

JSONPath 測試工具

用你的 JSON 試跑 JSONPath 運算式,列出每個符合項目的確切路徑與 JSON Pointer。

瀏覽器本機執行資料格式1158
免費

輸入

0 B

結果

結果會顯示在這裡。

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 線上解析