使用jq获取JSON数组顶级id元素值失败,求解决方法
解决jq获取数组中对象id的问题
报错原因
你的JSON数据是数组结构(外层由[]包裹),直接使用.id是尝试对数组使用字符串索引,这不符合jq的语法规则,因此抛出Cannot index array with string "id"错误。而你获取authenticatorName时用.[]遍历数组内的每个对象,这个逻辑是正确的。
正确命令
根据你的需求选择对应的命令:
- 获取数组中所有对象的id(输出每个id,每行一个):
FACTOR_ID=$(echo "$RESPONSE2" | jq -r '.[] | .id') - 仅获取数组中第一个对象的id(如果数组只有一个元素):
FACTOR_ID=$(echo "$RESPONSE2" | jq -r '.[0].id')
示例验证
假设你的JSON数据如下:
[
{
"id": "factor_abc123",
"profile": {
"authenticatorName": "GoogleAuth"
}
},
{
"id": "factor_def456",
"profile": {
"authenticatorName": "MicrosoftAuth"
}
}
]
- 执行第一条命令会输出:
factor_abc123 factor_def456 - 执行第二条命令会输出:
factor_abc123
内容的提问来源于stack exchange,提问作者200mg
相关产品推荐
相关产品推荐

