正在準備工作環境...
jq 處理 JSON:API 回傳一大坨怎麼辦
API 回傳的 JSON 動不動就幾百行,全部擠成一團根本看不懂。jq 就是 JSON 的瑞士刀——可以美化、篩選、提取你要的欄位,一行搞定。
你會學到什麼
- 用
jq '.'美化 JSON - 用
.key取出特定欄位 - 用
.[0]取出陣列元素 - 用
select()做條件篩選 - 用
@csv或格式化輸出轉換資料
觀念速記
jq就像是 JSON 的 grep — 幫你從一大堆資料中精準挑出需要的部分。- JSON 的兩大結構:物件
{}用.key取值;陣列[]用.[index]取值。 jq的 filter 是用|串接的,跟 Shell 管線概念一樣。
範例操作
條件篩選:select()
常用 jq 語法速查
| 語法 | 用途 | 範例 |
|---|---|---|
. | 整個 JSON | jq '.' |
.key | 取物件欄位 | .products |
.[0] | 取陣列第一個 | .products[0] |
.[] | 展開陣列每個元素 | .products[] |
select(條件) | 條件篩選 | select(.price > 100) |
-r | 去掉字串引號 | jq -r '.name' |
length | 計算陣列長度 | .products | length |
\(.key) | 字串插值 | "\(.name): \(.price)" |
實戰:curl + jq 組合技
工作中最常見的用法:用 curl 打 API,再用 jq 處理結果。
AI 協作:學了這個,跟 AI 怎麼配合?
JSON 是現代 API 的共通語言。會 jq 就能自己處理資料,不用等工程師寫程式。
你的人類優勢:
- 你知道哪些欄位是重要的(例如「我只要看商品名和價格」)
- 你能判斷篩選條件是否合理(例如「庫存低於 5 要補貨」是業務邏輯)
可以這樣跟 AI 說:
這是我們的商品 API 回傳格式(貼上 JSON 範例)。幫我寫一個 jq 指令,列出所有庫存低於 10 的商品名稱和庫存數量,用 tab 分隔。
小練習
互動示範
DEMO 1可以修改程式碼試玩
DEMO 2可以修改程式碼試玩
DEMO 3可以修改程式碼試玩
挑戰任務
Task 1
用 echo 輸出 JSON '{"store":"91APP旗艦店","revenue":158000}' 並用 jq 取出 store 欄位的值
Task 2
用 echo 輸出 JSON '{"items":["衛生紙","洗衣精","牙膏"]}' 並用 jq 取出第二個商品
Task 3
用 echo 輸出 JSON '{"products":[{"name":"A","price":100},{"name":"B","price":2500}]}' 並用 jq 找出 price 超過 1000 的商品名稱
← BackNext Lesson →