logo
GeekFormat

JSONPath 查詢

線上JSONPath查詢工具,支援$.property屬性存取、[n]陣列索引、[*]萬用字元、[start:end]陣列切片、?()條件過濾運算式,輸入JSON和路徑後即時查詢(400ms防抖),支援JSON格式化檢視和對齊表格檢視雙模式切換,內建8個常用路徑範例,JSON語法錯誤可自動修復,支援上傳JSON檔案、下載查詢結果、鍵盤快速鍵操作、本機歷史記錄自動儲存,左右面板寬度可調、字體大小切換,所有解析和查詢純瀏覽器本機完成,不上傳任何資料,適合QA測試介面斷言、後端除錯日誌欄位擷取、前端對接API驗證回傳結構。

相關推薦

適用場景

  • QA測試工程師編寫介面自動化測試前,互動式驗證JSONPath斷言運算式是否能正確擷取目標欄位
  • 後端開發除錯複雜巢狀介面回傳時,快速定位深層欄位路徑,不用逐層手動展開
  • 前端對接第三方API,快速驗證回傳JSON結構,確認欄位路徑後再寫程式碼取值
  • 維運/後端排查ELK、Jaeger日誌中的JSON欄位時,快速擷取特定欄位值分析問題
  • 資料分析前對JSON介面回傳資料做條件篩選,先過濾出符合條件的記錄再做後續處理
  • 在Postman、JMeter、RestAssured等工具中設定JSON擷取器前,本機除錯好運算式避免反覆執行介面
  • 處理批次JSON資料,快速擷取需要的欄位子集生成新的資料結構
  • 學習JSONPath語法時,透過即時回饋快速驗證各種語法寫法,加深理解
  • 爬蟲開發除錯時驗證JSON介面回傳的資料擷取路徑是否正確
  • API文件編寫時,用工具驗證範例JSON的路徑後再寫入文件範例
  • 行動裝置開發除錯介面,手機上臨時開啟工具快速驗證欄位擷取,不用找電腦
  • Code Review時檢查同事寫的JSONPath運算式是否正確能取到預期值

功能特點

  • 全實用語法支援:$.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完成,資料不上傳伺服器,敏感介面資料和日誌安心使用

使用方法

  1. 點擊工具列「範例」按鈕載入範例JSON快速體驗,或貼上/上傳你自己的JSON資料到左側編輯器
  2. 在頂部查詢框輸入JSONPath運算式(可以點擊右側「範例」按鈕選擇常用路徑),以$開頭或直接寫屬性路徑均可
  3. 輸入後400ms自動查詢,右側立即顯示結果;可切換「JSON檢視」看格式化結構或「表格檢視」看對齊列表
  4. 驗證運算式正確後點擊複製或下載按鈕儲存結果,也可複製JSONPath運算式到Postman/JMeter等工具使用

常見問題

支援哪些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屬性,形成一個作者列表。

關於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%以上日常開發場景。對於遞迴下降(..)、腳本運算式、多條件組合等高階語法目前暫不支援,如果你的場景需要這些高階特性,可能需要使用更完整的實作函式庫。對於絕大多數介面除錯和欄位擷取需求,目前語法集完全夠用且更輕量快速。

术语表

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快速鍵
執行查詢⇧ + ⌘ + EnterShift + Ctrl + Enter
格式化JSON⇧ + ⌘ + FShift + Ctrl + F
上傳檔案⇧ + ⌘ + OShift + Ctrl + O
下載結果⇧ + ⌘ + DShift + Ctrl + D
清空內容⇧ + ⌘ + KShift + Ctrl + K

Privacy & Security

本JSONPath查詢工具所有JSON解析、路徑匹配、條件過濾、表格格式化工作完全在你的瀏覽器本機透過JavaScript完成,你輸入的JSON資料、查詢的路徑和回傳結果都不會被上傳到任何伺服器,也不會被記錄、快取或儲存到雲端。輸入歷史僅保存在你瀏覽器本機localStorage(最多200筆),你可以透過清空按鈕或清除瀏覽器資料刪除。包含敏感業務欄位、未上線介面資料、生產環境日誌都可以安心使用,不存在任何資料外洩風險。

Authoritative References

Troubleshooting

提示「路徑不存在或值為null/undefined」

說明JSONPath路徑在目前JSON中找不到對應值。檢查:①屬性名拼寫和大小寫是否正確(JSON是大小寫敏感的);②巢狀層級是否正確,中間層是否存在;③陣列索引是否越界;④先點擊格式化確認JSON結構和你預期一致。

提示「嘗試在非陣列物件上使用索引/切片/過濾」

說明你在非陣列的值上用了[]索引、[start:end]切片或?()過濾,這些操作只能用於陣列。檢查路徑對應位置實際是陣列還是單個物件,可以先用$萬用字元或根路徑確認實際結構。

條件過濾沒有回傳預期結果

檢查:①@後面是否有點號(必須寫@.field,不能漏了點);②字串值是否用單/雙引號包裹(?(@.name == zhangsan)不對,要寫?(@.name == 'zhangsan'));③數值不要加引號,否則會按字串比較;④比較運算子兩側不要有多餘空白。

提示「括號不配對」

說明JSONPath運算式的方括號[]或過濾括號()沒有正確配對,檢查是否漏寫了閉合]或),特別是多層方括號巢狀時注意每個[都要有對應的]。