jq
輕量級命令列 JSON 處理器
基本用法
Pretty Print
預設情況下,jq 會美化輸出
jq '.' seaCreatures.json範例資料
jsonvar='[
{
"name": "Sammy",
"type": "shark",
"clams": 5
},
{
"name": "Bubbles",
"type": "orca",
"clams": 3
},
{
"name": "Splish",
"type": "dolphin",
"clams": 2
},
{
"name": "Splash",
"type": "dolphin",
"clams": 2
}
]'取得部分值
jq '.[].name' sea-creatures.json
# 輸出:
# "Sammy"
# "Bubbles"
# "Splish"
# "Splash"將結果放入陣列
jq '[.[].name]' sea-creatures.json
# [
# "Sammy",
# "Bubbles",
# "Splish",
# "Splash"
# ]-r 選項
raw output (移除引號)
jq -r '.[].name' sea-creatures.json
# Sammy
# Bubbles
# Splish
# Splash計算欄位
jq '[.[] | .clams]' sea-creatures.json
# [5, 3, 2, 2]jq 'map(.clams)' sea-creatures.json
# [5, 3, 2, 2]map() 函數
使用 map 迭代,然後用 add 加總
jq 'map(.clams) | add' sea-creatures.json
# 12map + select + add
jq 'map(.type)' sea-creatures.json
# ["shark", "orca", "dolphin", "dolphin"]jq 'map(select(.type == "dolphin"))' sea-creatures.json
# [
# {"name": "Splish", "type": "dolphin", "clams": 2},
# {"name": "Splash", "type": "dolphin", "clams": 2}
# ]jq 'map(select(.type == "dolphin").clams)' sea-creatures.json
# [2, 2]jq 'map(select(.type == "dolphin").clams) | add' sea-creatures.json
# 4轉換資料結構
jq '{ creatures: map(.name), totalClams: map(.clams) | add, totalDolphinClams: map(select(.type == "dolphin").clams) | add }' sea-creatures.json
# {
# "creatures": ["Sammy", "Bubbles", "Splish", "Splash"],
# "totalClams": 12,
# "totalDolphinClams": 4
# }其他選項
-c
緊湊輸出 (單行)
jq -c '.' data.jsonlength
計算 JSON 長度
jq length data.json