用JQ解析JSON

伯尼

我正在使用Bash在Linux机器上运行以下脚本片段。

JSON文件内容: [ { "id": 123456, "firstName": "John", "lastName": "Smith", "email": "[email protected]" } ]


JSON文件存储在通过${data[0]}管道传送到Bash脚本中的数组中。


Bash脚本:

trafficEmployeeId=123456 cat "${data[0]}" | jq --arg employeeId $trafficEmployeeId '.[] | select(.id == $employeeId) | .firstName'


脚本的输出应为John但是我什么也没得到。

罗曼·佩列赫雷斯特(RomanPerekhrest)

即使您为shell变量分配trafficEmployeeId数字,变量也将jq作为字符串参数传递到脚本中
该解决方案是解析参数作为JQtonumber功能。
第二点是只data[0]包含一个对象的数组,因此足以直接使用它.[0]并应用简单的if运算符条件。

完整的解决方案:

trafficEmployeeId=123456
echo "${data[0]}" | jq --arg employeeId "$trafficEmployeeId" '.[0] 
      | if .id == ($employeeId | tonumber) then .firstName else empty end'

输出:

"John"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章