如何用jq将JSON数组转换为Bash数组并遍历提取指定字段
解决方案
直接生成目标格式输出(高效处理大量数据)
无需显式创建Bash数组,直接用jq提取字段并格式化输出,适合处理3000条数据的场景:
jq -r 'to_entries[] | "index(\(.key)) username: \(.value.username) , name: \(.value.name)"' input.json
存入Bash数组后遍历(可选)
如果需要将数据存入Bash数组再处理,可使用以下命令:
# 读取jq输出到Bash数组 readarray -t user_list < <(jq -r 'to_entries[] | "index(\(.key)) username: \(.value.username) , name: \(.value.name)"' input.json) # 遍历数组输出 for item in "${user_list[@]}"; do echo "$item" done
说明
to_entries[]将JSON数组转换为带索引(key,从0开始)的键值对-r参数让jq输出原始字符串,避免多余引号readarray -t用于将每行输出存入数组,并自动去除换行符
内容的提问来源于stack exchange,提问作者Revan Hernandy
相关产品推荐
相关产品推荐

