JSONPath 查詢
線上JSONPath查詢工具,支援$.property屬性存取、[n]陣列索引、[*]萬用字元、[start:end]陣列切片、?()條件過濾運算式,輸入JSON和路徑後即時查詢(400ms防抖),支援JSON格式化檢視和對齊表格檢視雙模式切換,內建8個常用路徑範例,JSON語法錯誤可自動修復,支援上傳JSON檔案、下載查詢結果、鍵盤快速鍵操作、本機歷史記錄自動儲存,左右面板寬度可調、字體大小切換,所有解析和查詢純瀏覽器本機完成,不上傳任何資料,適合QA測試介面斷言、後端除錯日誌欄位擷取、前端對接API驗證回傳結構。
相關推薦
關於JSONPath與資料擷取
JSONPath是一種用於從JSON文件中擷取指定資料的路徑運算式語言,類似於XPath對於XML的作用。在API開發和測試中,介面回傳的JSON往往層次深、巢狀多,手動展開逐層找欄位效率低且容易出錯,使用JSONPath可以透過一行運算式精準定位並擷取出目標資料,是介面除錯、自動化測試、資料擷取場景中開發者的必備工具。
JSONPath的核心設計思想是用路徑符號描述資料位置:$表示根節點(整個JSON物件),點號.或方括號[]存取子屬性,[n]按下標存取陣列元素,[*]匹配所有元素,[start:end]截取陣列片段,?()按條件過濾陣列元素。這套語法簡潔但表達力強,可以覆蓋絕大多數資料擷取需求。
條件過濾是JSONPath最實用的功能之一,用?(@.欄位 運算子 值)形式表達篩選邏輯,比如?(@.price < 100)篩選價格欄位小於100的陣列項,?(@.status == 'active')篩選狀態為active的記錄。@代表目前正在走訪的陣列元素,@.field存取目前元素的某個欄位,這讓條件篩選非常直觀。
為什麼需要專門的JSONPath工具而不是直接在程式碼裡除錯?因為寫介面自動化斷言或資料擷取程式碼時,如果JSONPath寫錯了,你可能需要反覆執行介面、列印日誌、修改程式碼再重跑,效率很低。線上工具裡互動式除錯可以秒級看到結果,調整運算式即時回饋,驗證正確後再複製到程式碼裡,能節省大量除錯時間。
表格檢視是本工具區別於很多同類工具的實用功能:當查詢結果是物件陣列時(這是最常見的介面回傳列表形式),自動把所有物件的鍵擷取為表頭,每列資料對齊展示,類似Excel試算表的瀏覽體驗,比在縮排JSON裡逐列找欄位值要直觀得多,快速掃一眼就能對比多筆記錄的欄位差異。
自動修復JSON錯誤也是針對實際開發場景設計的功能:從日誌、文件、聊天視窗複製的JSON經常有各種小問題——用了單引號、缺少逗號、最後一項多了尾逗號、屬性名沒加引號等,手動修復很麻煩,工具的自動修復功能可以一鍵處理大部分常見JSON格式問題,不用再去逐字元找錯誤。
本機歷史記錄是針對高頻使用最佳化的小細節:開發者經常需要反覆除錯同一個介面,每次打開工具重新貼上JSON很麻煩,工具自動把最近輸入儲存到瀏覽器本機儲存,下次打開自動恢復上次內容,200筆歷史足夠日常工作使用。所有資料只存在你自己的瀏覽器裡,不會上傳。
需要說明本工具支援的是實用核心JSONPath語法子集(屬性存取、索引、萬用字元、切片、條件過濾),覆蓋90%以上日常開發場景。對於遞迴下降(..)、腳本運算式、多條件組合等高階語法目前暫不支援,如果你的場景需要這些高階特性,可能需要使用更完整的實作函式庫。對於絕大多數介面除錯和欄位擷取需求,目前語法集完全夠用且更輕量快速。
適用場景
- QA測試工程師編寫介面自動化測試前,互動式驗證JSONPath斷言運算式是否能正確擷取目標欄位
- 後端開發除錯複雜巢狀介面回傳時,快速定位深層欄位路徑,不用逐層手動展開
- 前端對接第三方API,快速驗證回傳JSON結構,確認欄位路徑後再寫程式碼取值
- 維運/後端排查ELK、Jaeger日誌中的JSON欄位時,快速擷取特定欄位值分析問題
- 資料分析前對JSON介面回傳資料做條件篩選,先過濾出符合條件的記錄再做後續處理
- 在Postman、JMeter、RestAssured等工具中設定JSON擷取器前,本機除錯好運算式避免反覆執行介面
- 處理批次JSON資料,快速擷取需要的欄位子集生成新的資料結構
- 學習JSONPath語法時,透過即時回饋快速驗證各種語法寫法,加深理解
- 爬蟲開發除錯時驗證JSON介面回傳的資料擷取路徑是否正確
- API文件編寫時,用工具驗證範例JSON的路徑後再寫入文件範例
- 行動裝置開發除錯介面,手機上臨時開啟工具快速驗證欄位擷取,不用找電腦
- Code Review時檢查同事寫的JSONPath運算式是否正確能取到預期值
使用方法
- 點擊工具列「範例」按鈕載入範例JSON快速體驗,或貼上/上傳你自己的JSON資料到左側編輯器
- 在頂部查詢框輸入JSONPath運算式(可以點擊右側「範例」按鈕選擇常用路徑),以$開頭或直接寫屬性路徑均可
- 輸入後400ms自動查詢,右側立即顯示結果;可切換「JSON檢視」看格式化結構或「表格檢視」看對齊列表
- 驗證運算式正確後點擊複製或下載按鈕儲存結果,也可複製JSONPath運算式到Postman/JMeter等工具使用
功能特點
- 全實用語法支援:$.property屬性存取、[n]陣列索引(含[-1]取最後一項)、[*]萬用字元、[start:end]陣列切片、?()條件過濾(支援==/!=/>/</>=/<=比較)
- 即時查詢:輸入JSON或路徑後400ms防抖自動執行查詢,無需點擊按鈕,結果即時更新
- JSON/表格雙檢視:查詢結果支援美化JSON檢視和對齊表格檢視切換,物件陣列結果自動按欄位對齊展示,方便快速瀏覽
- 內建常用範例:下拉選單提供8個常用路徑範例(根物件、所有書籍、首項/末項、切片、價格擷取、條件過濾等),點擊即填
- 語法說明彈窗:一鍵開啟說明面板檢視6種核心語法速查和鍵盤快速鍵說明,Mac/Windows自動適配快速鍵顯示
- 智慧錯誤修復:JSON格式錯誤時自動偵測可修復問題,一鍵修復常見JSON語法錯誤(缺逗號、引號、尾部逗號等)
- 一鍵格式化:內建JSON格式化功能,Shift+Cmd/Ctrl+F快速美化輸入JSON,排版整齊方便閱讀層級
- 檔案上傳下載:支援上傳.json/.txt檔案直接讀取內容,查詢結果一鍵下載為query-result.json檔案
- 鍵盤快速鍵:Shift+Cmd/Ctrl組合鍵快捷操作(Enter查詢、F格式化、O上傳、D下載、K清空),提升操作效率
- 本機歷史記錄:自動儲存最近200筆輸入到瀏覽器localStorage,下次開啟自動恢復上次內容,無需重複貼上
- 面板寬度可調:電腦端可拖曳中間分隔條調整左右面板寬度比例,根據JSON結構彈性分配空間
- 字體大小切換:支援14px/16px兩種程式碼字體大小切換,長時間除錯保護眼睛
- 等寬程式碼編輯器:基於CodeMirror實現語法突顯、行號顯示、括號配對,編輯體驗專業流暢
- 純本機瀏覽器處理:所有JSON解析、路徑匹配、條件過濾都在本機JavaScript完成,資料不上傳伺服器,敏感介面資料和日誌安心使用
常見問題
支援哪些JSONPath語法?
支援以下實用語法:①$.property或['property']存取物件屬性;②[n]按索引存取陣列元素(n從0開始,[-1]表示最後一項);③[*]或.*萬用字元,匹配陣列所有元素或物件所有屬性值;④[start:end]陣列切片,取指定範圍元素;⑤?(@.field op value)條件過濾,支援==/!=/>/</>=/<=六種比較運算子,支援字串和數值比較。
怎麼擷取陣列中滿足條件的元素?
使用?()條件過濾運算式。例如$.store.book[?(@.price < 80)]篩選價格小於80的書籍,$.store.book[?(@.category == '程式設計')]篩選分類為程式設計的書籍。注意屬性名前要加@.表示目前元素,字串值用單引號或雙引號包裹。
怎麼取陣列第一個/最後一個/前N個元素?
[0]取第一個元素,[-1]取最後一個元素,[0:2]取索引0到1的前兩個元素(切片左閉右開,不包含end索引),例如$.store.book[0:3]取前三本書。
表格檢視和JSON檢視有什麼區別?
JSON檢視顯示標準格式化縮排的JSON結果,保留完整巢狀結構,適合複製和檢視完整資料;表格檢視把物件陣列結果自動按屬性欄位對齊展示,類似Excel試算表,瀏覽多筆記錄時更直觀,可以快速掃過所有列的欄位值對比差異。簡單類型結果也會按鍵值對對齊顯示。
提示JSON解析錯誤怎麼辦?
如果輸入的JSON有語法錯誤(缺少逗號、引號不配對、多餘尾逗號、單引號等),錯誤區域會顯示紅色提示,並出現「修復錯誤」按鈕,點擊即可自動嘗試修復常見JSON問題。也可以先用Shift+Cmd/Ctrl+F格式化,如果格式化報錯說明JSON確實有問題,修復後再查詢。
查詢後什麼結果都不顯示?
請檢查:①JSON是否合法有效(可點格式化按鈕驗證);②JSONPath路徑拼寫是否正確,屬性名大小寫敏感;③路徑是否存在(比如存取不存在的屬性會報錯);④過濾運算式語法是否正確,括號和引號是否配對。
內建範例怎麼使用?
點擊查詢框右側的「範例」按鈕(向下箭頭),下拉選單會列出8個常用路徑範例,點擊任何一個範例就會自動填入路徑運算式,同時建議先點擊「範例」按鈕載入範例JSON資料(書店資料),配合範例路徑體驗效果。
快速鍵有哪些?
統一使用Shift+Cmd(Mac)/Shift+Ctrl(Windows)組合鍵:Shift+Enter執行查詢,Shift+F格式化JSON,Shift+O上傳檔案,Shift+D下載結果,Shift+K清空所有內容。說明按鈕(?圖示)裡可以隨時檢視完整快速鍵列表。
條件過濾支援哪些比較運算子?
支援六種比較運算子:==(等於)、!=(不等於)、>(大於)、<(小於)、>=(大於等於)、<=(小於等於)。數值比較按數字大小比較,字串比較按字典序比較,字串值需要用單引號或雙引號包裹。
路徑需要以$開頭嗎?
不強制要求。工具會自動補全開頭的$.,直接輸入store.book[0]也可以正常運作,系統會自動正規化為$.store.book[0]執行。不過標準JSONPath規範建議以$開頭表示根節點。
為什麼我之前輸入的內容下次開啟還在?
工具會自動把最近輸入的JSON儲存到瀏覽器本機localStorage(最多200筆歷史記錄),下次開啟頁面自動恢復上次的內容,不需要每次都重新貼上介面回傳結果。清空按鈕(Shift+K)會清除目前內容。
可以上傳JSON檔案嗎?
可以。點擊工具列「上傳」按鈕或按Shift+O,選擇本機.json或.txt檔案即可自動讀取檔案內容填入輸入框。查詢結果也可以點擊「下載」按鈕或Shift+D儲存為query-result.json檔案到本機。
適合用來做Postman/JMeter介面斷言嗎?
非常適合。介面除錯時,把介面回傳的JSON貼到工具中,互動式調整JSONPath運算式直到查詢結果符合預期,然後把驗證通過的運算式複製到Postman測試腳本、JMeter JSON Extractor、自動化測試框架中使用,可以大幅減少線上除錯時間。
我輸入的介面資料會上傳到伺服器嗎?
不會。所有JSON解析、JSONPath路徑匹配、條件過濾、表格格式化都在你瀏覽器本機透過JavaScript完成,輸入的JSON內容不會透過網路發送到任何伺服器,關閉頁面後只有本機localStorage保留(可清空),敏感業務資料和未上線介面資料可以安心使用。
萬用字元[*]可以用在物件上嗎?
可以。[*]用在陣列上回傳陣列所有元素;用在物件上(比如$.store.*)回傳物件所有屬性值組成的陣列。和屬性組合使用時比如$.store.book[*].author可以擷取陣列中所有元素的author屬性,形成一個作者列表。
故障排查
提示「路徑不存在或值為null/undefined」
說明JSONPath路徑在目前JSON中找不到對應值。檢查:①屬性名拼寫和大小寫是否正確(JSON是大小寫敏感的);②巢狀層級是否正確,中間層是否存在;③陣列索引是否越界;④先點擊格式化確認JSON結構和你預期一致。
提示「嘗試在非陣列物件上使用索引/切片/過濾」
說明你在非陣列的值上用了[]索引、[start:end]切片或?()過濾,這些操作只能用於陣列。檢查路徑對應位置實際是陣列還是單個物件,可以先用$萬用字元或根路徑確認實際結構。
條件過濾沒有回傳預期結果
檢查:①@後面是否有點號(必須寫@.field,不能漏了點);②字串值是否用單/雙引號包裹(?(@.name == zhangsan)不對,要寫?(@.name == 'zhangsan'));③數值不要加引號,否則會按字串比較;④比較運算子兩側不要有多餘空白。
提示「括號不配對」
說明JSONPath運算式的方括號[]或過濾括號()沒有正確配對,檢查是否漏寫了閉合]或),特別是多層方括號巢狀時注意每個[都要有對應的]。
術語表
- JSONPath
- 一種用於從JSON資料中擷取指定部分的路徑運算式語言,類似於XPath之於XML,透過路徑符號描述目標資料位置。
- 根節點 ($)
- JSONPath運算式的起點,表示整個JSON文件的根物件或根陣列,路徑可以從$開始,工具也支援省略$直接寫路徑。
- 目前節點 (@)
- 在過濾運算式中使用,表示目前正在走訪的陣列元素,@.field用於存取目前元素的指定欄位。
- 屬性存取 (.property 或 ['property'])
- 存取物件指定屬性的兩種寫法:點號寫法($.store.book)簡潔,方括號引號寫法($['store']['book'])適合屬性名含特殊字元的情況。
- 陣列索引 ([n])
- 按位置存取陣列元素,索引從0開始,[0]表示第一個元素,[-1]表示最後一個元素。
- 萬用字元 ([*] 或 .*)
- 匹配目前位置所有子項:用在陣列上回傳所有元素,用在物件上回傳所有屬性值。
- 陣列切片 ([start:end])
- 截取陣列的一段元素,左閉右開區間(包含start不包含end),省略start表示從頭開始,省略end表示到末尾。
- 條件過濾 (?())
- 按條件篩選陣列元素,內部寫比較運算式,支援==/!=/>/</>=/<=六種比較,字串值需用引號包裹。
- Postman斷言
- Postman介面測試工具中的Tests腳本,使用JSONPath擷取介面回傳欄位後做斷言驗證,是介面自動化測試的常用方式。
- 防抖 (Debounce)
- 輸入停止後延遲執行查詢的最佳化技術(本工具400ms),避免每按一個鍵就重新查詢,提升輸入流暢度。
- CodeMirror
- 瀏覽器端程式碼編輯器元件,提供語法突顯、行號、括號配對等專業程式碼編輯功能,本工具使用它作為JSON編輯區。
- 本機處理
- 所有JSON解析和查詢邏輯在使用者瀏覽器內透過JavaScript執行,資料不上傳到伺服器,既快又安全,適合處理敏感資料。
JSONPath 核心語法速查表
本工具支援的所有語法:
| 語法 | 說明 | 範例結果(範例書店JSON) |
|---|---|---|
$ | 根物件,回傳整個JSON | 完整store物件 |
$.store.book[0] | 存取book陣列第一個元素(索引從0開始) | JavaScript高級程式設計 這本書 |
$.store.book[-1] | 存取陣列最後一個元素 | 使用者體驗要素 這本書 |
$.store.book[*] | 萬用字元,回傳陣列所有元素 | 全部3本書組成的陣列 |
$.store.book[0:2] | 陣列切片,取索引0到1(左閉右開) | 前2本書 |
$.store.book[*].author | 擷取陣列所有元素的author欄位 | ["張三","李四","王五"] |
$.store.book[?(@.price < 80)] | 條件過濾,篩選price<80的書籍 | Python和UX兩本書(價格79和59) |
$.store.bicycle.color | 點號存取巢狀物件屬性 | "紅色" |
條件過濾比較運算子
?()過濾運算式支援的運算子:
| 運算子 | 含義 | 範例 |
|---|---|---|
== | 等於(支援數值和字串) | ?(@.category == '程式設計') |
!= | 不等於 | ?(@.status != 'deleted') |
> | 大於(數值比較) | ?(@.price > 100) |
< | 小於 | ?(@.price < 50) |
>= | 大於等於 | ?(@.age >= 18) |
<= | 小於等於 | ?(@.count <= 100) |
鍵盤快速鍵列表
所有快速鍵使用 Shift + Cmd(Mac)/Ctrl(Windows) 組合鍵:
| 操作 | Mac快速鍵 | Windows快速鍵 |
|---|---|---|
| 執行查詢 | ⇧ + ⌘ + Enter | Shift + Ctrl + Enter |
| 格式化JSON | ⇧ + ⌘ + F | Shift + Ctrl + F |
| 上傳檔案 | ⇧ + ⌘ + O | Shift + Ctrl + O |
| 下載結果 | ⇧ + ⌘ + D | Shift + Ctrl + D |
| 清空內容 | ⇧ + ⌘ + K | Shift + Ctrl + K |
Privacy & Security
本JSONPath查詢工具所有JSON解析、路徑匹配、條件過濾、表格格式化工作完全在你的瀏覽器本機透過JavaScript完成,你輸入的JSON資料、查詢的路徑和回傳結果都不會被上傳到任何伺服器,也不會被記錄、快取或儲存到雲端。輸入歷史僅保存在你瀏覽器本機localStorage(最多200筆),你可以透過清空按鈕或清除瀏覽器資料刪除。包含敏感業務欄位、未上線介面資料、生產環境日誌都可以安心使用,不存在任何資料外洩風險。
Authoritative References
- goessner.netJSONPath 原始規範(Stefan Goessner)
- MDNMDN - JSON 官方文件
- PostmanPostman - 使用JSONPath擷取回應資料
- JSON 壓縮
- CSV 轉 JSON
- JSON 轉 CSV
- JSON Diff
- JSON Escape / Unescape
- JSON 扁平化
- JSON 格式化
- JSON 產生器
- JSONPath 查詢
- JSON 合併
- JSON 修復
- JSON Schema 驗證器
- JSON 排序
- JSON Stringify
- JSON 轉 HTML 表格
- JSON 轉 Java
- JSON 轉 Markdown
- JSON 轉 SQL
- JSON 轉 TOML
- JSON 轉 TypeScript
- XML 轉 JSON
- JSON 轉 XML
- YAML 轉 JSON
- JSON 轉 YAML
- JSON 轉 Go
- JSON 轉 Rust
- JSON 轉 Swift
- JSON轉C#
- JSON 轉 C++
- JSON 轉 PHP
- JSON 轉 Python