JSONPath 測試

在瀏覽器裡執行 JSONPath 查詢。要排版文件,請用 JSON 格式化

可以查什麼

JSONPath 從一份 JSON 文件裡取出值。這一頁執行一個實用子集,並把每個相符以 JSON 傳回。要先整理文件,用 JSON 格式化。

怎麼用

  1. 上面的框貼 JSON,JSONPath 裡寫路徑。路徑一開始是 $。
  2. 轉換執行這條查詢。路徑旁邊的一行寫著回來了多少個相符。
  3. 顯示範例載入 {"store":{"book":[{"author":"Nigel","price":8},{"author":"Evelyn","price":12}],"bicycle":{"price":19}}} 和路徑 $.store.book[*].author。結果是 Nigel 和 Evelyn 的 JSON 陣列,個數是 2。
  4. 框是空的時候,那幾個路徑按鈕會填入同一份文件。$.store.book[?(@.price<10)].author 傳回 Nigel。$..price 傳回 8、12 和 19。
  5. 全部清除清空文件,把路徑設回 $,並清掉個數。複製結果複製這些 JSON 相符。

這一頁接受的路徑

$ 是根。.key 和 ['key'] 讀一個屬性。[n] 讀一個索引,負數從末尾數。[*] 讀每個元素或屬性。[start:end:step] 切片,不含 end。[0,2] 取這些索引。..key 走遍每個巢狀物件,收集這個鍵。

篩選的形式是 [?(@.price<10)] 或 [?(@.author=='Nigel')]。比較是 ==、!=、<、>、<= 和 >=。文字按原文比較。大小比較用於數字。篩選作用在陣列上。不認識的路徑,或解析不了的 JSON,都是錯誤。零個相符是合法的空陣列。

用在哪

  • 從清單裡的每個物件抽出一個欄位。
  • 留下價格低於某個數的那些列。
  • 找出每一個價格,包括放在不同物件裡的。

常見問題

只有一個作者,為什麼結果還是陣列?

每條查詢都傳回相符清單,所以一個結果仍是只有一個元素的陣列。

腳本運算式能用嗎?

篩選只是對 @ 及其欄位做一次比較。其他腳本寫法會報錯停下。