API、設定檔、jq、Schema — Ecosystem
語法學會了,這一單元看 JSON 在哪裡「被使用」——以及隨之而來的工具與標準。
REST API 的回應體幾乎都是 JSON,請求體也常用 JSON(Content-Type: application/json)。
HTTP/1.1 200 OK Content-Type: application/json { "id": 7, "title": "Hello", "done": false }
很多工具用 JSON(或它的延伸格式)當設定:
| 檔案 | 用途 | 註解? |
|---|---|---|
package.json | Node 專案與相依管理 | ❌(純 JSON) |
tsconfig.json | TypeScript 編譯設定 | ✅(JSONC) |
settings.json | VS Code 使用者設定 | ✅(JSONC) |
composer.json | PHP Composer | ❌ |
.babelrc | Babel 設定 | 看版本(可用 JSON5) |
package.json 是純 JSON(npm 不容許註解);
VS Code 自己的檔案才容許 JSONC。別搞混,否則一存檔就報錯。
jq 是終端機裡的 JSON 瑞士刀——查詢、過濾、轉換一把抓。五分鐘上手:
# 格式化(美化縮排) echo '{"a":1}' | jq . # 取欄位 cat data.json | jq '.users[0].name' # 過濾條件 cat data.json | jq '.users[] | select(.active == true)' # 選多欄(重組成新物件) cat data.json | jq '{total: .meta.total, names: [.users[].name]}'
想知道有哪些欄位?jq 'keys' 列出所有鍵。
JSON Schema 是描述「JSON 該長什麼樣」的標準(draft-07 最常見)。
用一份 schema 就能驗證資料是否合格、產生文件、甚至自動補全。
{ "type": "object", "required": ["name"], "properties": { "name": { "type": "string" }, "age": { "type": "integer", "minimum": 0 } } }
OpenAPI(Swagger)→ API 文件 VS Code → 設定檔自動補全 前端表單 → 自動驗證 CI → 拒絕壞格式的設定
JSONP(JSON with Padding)是古早的跨域技巧:用 <script> 標籤載入
包在函式呼叫裡的 JSON,繞過瀏覽器同源政策。現代已被 CORS + fetch 取代,
但偶爾在舊系統看到。辨識特徵:回傳像 callback({...})。