跳到主要內容
Cypher's Practical Coding
正在準備工作環境...

jq 處理 JSON:API 回傳一大坨怎麼辦

API 回傳的 JSON 動不動就幾百行,全部擠成一團根本看不懂。jq 就是 JSON 的瑞士刀——可以美化、篩選、提取你要的欄位,一行搞定。

你會學到什麼

  • jq '.' 美化 JSON
  • .key 取出特定欄位
  • .[0] 取出陣列元素
  • select() 做條件篩選
  • @csv 或格式化輸出轉換資料

觀念速記

  • jq 就像是 JSON 的 grep — 幫你從一大堆資料中精準挑出需要的部分。
  • JSON 的兩大結構:物件 {}.key 取值;陣列 [].[index] 取值。
  • jq 的 filter 是用 | 串接的,跟 Shell 管線概念一樣。

範例操作

條件篩選:select()

常用 jq 語法速查

語法用途範例
.整個 JSONjq '.'
.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 →