開發工具
JSON 路徑查詢工具 — 樹狀檢視與 JSONPath 查詢
以樹狀結構檢視 JSON,取得 JSONPath、JavaScript、Python、jq 與 lodash 路徑,並在瀏覽器內執行基本查詢與篩選。
開發工具
以樹狀結構檢視 JSON,取得 JSONPath、JavaScript、Python、jq 與 lodash 路徑,並在瀏覽器內執行基本查詢與篩選。
JSONPath 是用來選取 JSON 文件中節點的查詢語言,從根節點 $ 開始,依成員名稱或陣列索引尋找資料。其標準規格定義於 RFC 9535。
本工具支援常用的部分語法:子成員、非負整數陣列索引、萬用字元、遞迴搜尋,以及對陣列元素的單一成員進行比較的篩選條件。本工具不是完整的 RFC 9535 驗證器,不支援聯集選取(union)、切片(slice)、函式、正規表示式或含 AND/OR 的複合條件。
貼上 JSON,或載入 JSON、文字檔,即可瀏覽樹狀結構。選取節點後,可分別查看及複製 JSONPath、JavaScript、Python、jq 與 lodash 的存取表示式。
包含特殊字元的成員名稱會使用加上引號的方括號寫法。JavaScript 與 Python 例如 data["users"][0]["name"],jq 為 .["users"][0]["name"],lodash 則使用陣列路徑 _.get(data, ["users", 0, "name"]),避免含點號的名稱產生歧義。JavaScript 與 Python 範例中的 data 代表已解析的 JSON 值;使用 lodash 時,需先載入該函式庫,並以 _ 存取。
| 語法 | 用途 | 範例 |
|---|---|---|
$ | 根節點 | $ |
.name/["name"] | 子成員 | $.users[0]["display-name"] |
[0] | 從 0 開始的陣列索引 | $.users[0] |
[*]/.* | 所有直接子節點 | $.users[*].name |
..name/..* | 遞迴搜尋 | $..name |
[?(@.x>=1)] | 符合單一比較條件的陣列元素 | $.items[?(@.price>=1000)] |
篩選條件支援 ==、!=、>、<、>= 與 <=。相等與不相等比較可使用字串、數值、布林值及 null,不會自動轉換型別;大小比較僅支援數值。缺少成員與 null 並不相同,因此 @.x != null 也會選出沒有 x 成員的元素。工具會解析完整的查詢式,不支援的字元或不完整的語法會回報錯誤,不會只執行其中有效的部分。
每個檔案上限為 2 MiB(2,097,152 位元組);JSON 輸入上限為 2,000,000 個 UTF-16 編碼單元,單一成員名稱上限為 2,000 個。畫面的字元數以 UTF-16 編碼單元計算,部分表情符號會計為 2 個。樹狀結構最多支援 10,000 個節點、巢狀深度 100 層。單一路徑上限為 10,000 個字元,所有產生的路徑合計上限為 5,000,000 個。若格式化後超過輸入上限,會保留原始輸入;檔案讀取超過 5 秒則中止並提示重試。
JSONPath 查詢上限為 10,000 個字元,結果最多顯示前 1,000 筆,走訪量上限為 50,000 個節點。查詢結果中的陣列與物件會顯示元素或成員數量,選取路徑後可查看內容。單筆值預覽上限為 8,000 個字元,結果預覽合計上限為 200,000 個。
數值以 JavaScript 雙精度浮點數處理。小數可能經過捨入,極小的值可能變為 0,負零的顯示也可能改變,不會保留原始數值的書寫形式。重複的成員名稱會採用最後一個值。非有限數值,以及超出安全整數範圍(±9,007,199,254,740,991)的整數會被拒絕。如需處理更大的文件、高精度數值或更進階的查詢,請使用符合需求的專用函式庫。
有問題或建議嗎? 聯絡 NanToo