開發工具

JSON 路徑查詢工具 — 樹狀檢視及 JSONPath 查詢

以樹狀結構查看 JSON,複製 JSONPath、JavaScript、Python、jq 及 lodash 路徑,並在瀏覽器內執行基本查詢及篩選。

關於JSON 路徑查詢工具 — 樹狀檢視及 JSONPath 查詢

用 JSONPath 找出 JSON 中的數據

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)的整數會被拒絕。需要精確小數、更大文件或進階查詢時,請使用符合需求的專用函式庫。

常見問題

Q. JSON 內容會上傳至伺服器嗎?
JSON 解析、樹狀結構、路徑轉換及查詢均在瀏覽器內處理,工具不會上傳輸入的 JSON 內容。頁面載入、流量分析及廣告仍可能發出網絡請求。
Q. 根節點是 null、false 或 0,可以使用嗎?
可以。工具支援物件、陣列、字串、數值、布爾值及 null。選取根節點或執行 $ 查詢,即可查看根節點的值及各種路徑格式。
Q. 篩選條件可以比較哪些內容?
可將陣列元素的單一直接成員與字串、數值、布爾值或 null 比較。嵌套成員參照、AND/OR、正則表達式及函式均不支援。
Q. 可以直接載入 JSON Lines(JSONL)嗎?
不可以。輸入必須是一份標準 JSON 文件。若來源是 JSONL,請先將各項記錄放進同一個 JSON 陣列,再載入工具。

資料來源與規格

相關工具

有問題或建議? 聯絡 NanToo

為這項工具評分
5.0(1 則評分)