開發工具
JSON 路徑查詢工具 — 樹狀檢視及 JSONPath 查詢
以樹狀結構查看 JSON,複製 JSONPath、JavaScript、Python、jq 及 lodash 路徑,並在瀏覽器內執行基本查詢及篩選。
開發工具
以樹狀結構查看 JSON,複製 JSONPath、JavaScript、Python、jq 及 lodash 路徑,並在瀏覽器內執行基本查詢及篩選。
JSONPath 是選取 JSON 節點的查詢語言,由根節點 $ 出發,按成員名稱或陣列索引尋找數據。RFC 9535 定義了 JSONPath 的標準語法及語義。
本工具提供樹狀檢視及常用的部分查詢語法,包括子成員、非負整數索引、萬用字元、遞歸搜尋,以及比較陣列元素中單一成員的篩選條件。這並非完整的 RFC 9535 驗證器;聯集選取(union)、切片(slice)、函式、正則表達式及 AND/OR 複合條件均不支援。
貼上 JSON 或載入 JSON、文字檔後,選取樹狀結構中的節點,即可查看及複製 JSONPath、JavaScript、Python、jq 和 lodash 的存取表達式。輸入的成員名稱和值會保留,不會翻譯。
例如,JavaScript 和 Python 可使用 data["users"][0]["name"],jq 使用 .["users"][0]["name"]。這裏的 data 是已解析的 JSON 值。lodash 使用 _.get(data, ["users", 0, "name"]);需先載入 lodash,並以 _ 存取。含點號、引號等特殊字元的名稱會加上引號及所需的轉義,避免被當作多層路徑。這些格式代表單一節點的路徑,並非將任意 JSONPath 查詢翻譯成另一種程式語言。
| 語法 | 用途 | 示例 |
|---|---|---|
$ | 根節點 | $ |
.name/["name"] | 子成員 | $.users[0]["display-name"] |
[0] | 由 0 開始的陣列索引 | $.users[0] |
[*]/.* | 所有直接子節點 | $.users[*].name |
..name/..* | 遞歸搜尋 | $..name |
[?(@.x>=1)] | 按單一成員的值篩選陣列元素 | $.items[?(@.price>=100)] |
比較運算子包括 ==、!=、>、<、>= 及 <=。相等及不相等比較可使用字串、數值、布爾值或 null,不會自動轉換類型;大小比較只支援數值。缺少成員不等於 null,因此 @.x != null 亦會選出沒有 x 成員的元素。查詢式必須完整有效;未支援或未完成的語法會顯示錯誤,不會只執行有效的前半部分。
每個檔案最多 2 MiB(2,097,152 位元組),JSON 輸入最多 2,000,000 個 UTF-16 編碼單位。畫面的字元數按 UTF-16 編碼單位計算,部分表情符號會計作 2 個。單一成員名稱最多 2,000 個編碼單位,樹狀結構最多 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