提问人:dbradish-gmail 提问时间:11/14/2023 最后编辑:Barbaros Özhandbradish-gmail 更新时间:11/14/2023 访问量:62
如何使用jq读取嵌套的JSON数组并将单个值返回给变量?[复制]
How do I use jq to read nested JSON array and return single value to variable? [duplicate]
问:
这个问题在这里已经有答案了:
如何在 Bash 中将变量设置为命令的输出? (16 个答案)
jq 中包含“@”和“-”的转义字段名称?[复制] (2 个答案)
6天前关闭。
这篇文章在 6 天前被编辑并提交审核,未能重新打开帖子:
原始关闭原因未解决
我有一个简单的JSON文件,用于存储环境信息。
{
"environments": {
"dev": [
{
"id": "1",
"vm-IP": "ww.www.ww.ww",
"sql-name": "vmname1.eastus.cloudapp.azure.com",
"status": "inactive"
},
{
"id": "2",
"vm-IP": "xx.xxx.xx.xx",
"sql-name": "vmname2.eastus.cloudapp.azure.com",
"status": "active"
}
],
"stg": {
"id": "3",
"vm-IP": "yy.yyy.yy.yy",
"sql-name": "vmname3.eastus.cloudapp.azure.com"
},
"prod": {
"id": "4",
"vm-IP": "zz.zzz.zz.zz",
"sql-name": "vmname4.eastus.cloudapp.azure.com"
}
}
}
使用 Bash 环境,我正在尝试读取 IP 地址。这是我成功的“stg”脚本:
# This script works as expected b/c "stg" is not an array
# See STG objects
varFileName=myJsonFile.json
jq '.environments.stg' $varFileName
# Get the IP of stg
stgIP=$(jq -r '.environments.stg."vm-IP"' $varFileName)
echo $stgIP
我想得到 environments.dev。vm-IP”。这是我不成功的“dev”脚本。
# These scripts do not work
# Get the IP of dev 2
devIP=$(jq -r '.environments.dev[]."vm-IP" | select(.status == "active")' $varFileName)
error: Cannot index string with string "status"
# this also does not work
devIP=$(jq -r '.environments.dev[]."vm-IP" |
select(.environments.dev[].status == "active")' $varFileName)
error: Cannot index string with string "environments"
请提供过滤方面的帮助。jq
相关 SO 问题
- 使用 JQ 解析嵌套的 JSON 键
- 使用 jq 按键值筛选嵌套的 json
- 使用 jq 解析嵌套的 JSON 数组
- 使用 jq 解释 JSON 中的嵌套 JSON
- 如何在 Bash 中将变量设置为命令的输出?(此 ID 是关于设置变量的,根本不使用)
jq
- jq 中包含“@”和“-”的转义字段名称?(此 ID 是关于使用非常简单的 JSON 示例设置变量的。这个新问题的重点是关于使用读取嵌套的 JSON。
jq
答: 暂无答案
评论