Shell-Script
用 JQ 解析 JSON
我正在使用 Bash 在 Linux 機器上執行以下腳本片段。
JSON文件內容:
[ { "id": 123456, "firstName": "John", "lastName": "Smith", "email": "user@domain.com" } ]
JSON 文件儲存在通過
${data[0]}
管道傳輸到 Bash 腳本的數組中。bash 腳本:
trafficEmployeeId=123456 cat "${data[0]}" | jq --arg employeeId $trafficEmployeeId '.[] | select(.id == $employeeId) | .firstName'
腳本的輸出應該是
John
. 但我什麼也得不到。
即使您為 shell 變數分配
trafficEmployeeId
了一個數字,它也會jq
作為字元串參數傳遞到腳本中。解決方案是使用jq的函式
將參數解析為數字。 第二個時刻是包含只有一個對象的數組,因此直接使用並應用簡單的運算符條件就足夠了。tonumber
data[0]``.[0]``if
完整的解決方案:
trafficEmployeeId=123456 echo "${data[0]}" | jq --arg employeeId "$trafficEmployeeId" '.[0] | if .id == ($employeeId | tonumber) then .firstName else empty end'
輸出:
"John"