You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash中如何遍历curl返回的JSON数据并提取指定对象的value值

Bash 环境提取JSON指定字段的实现方法

处理JSON数据推荐使用专门的JSON解析工具jq,主流Linux发行版可通过对应包管理器直接安装(如Debian/Ubuntu执行apt install jq,CentOS/RHEL执行yum install jq)。

方法1:直接提取第二个对象的value值

你给出的JSON结构中data数组下标从0开始,第二个元素对应索引为1,直接执行以下命令即可提取:

# 提取value值(带JSON数值类型输出,结果为4)
echo "$response" | jq '.data[1].value'

# 提取纯数值存入变量(加-r参数输出原始字符串/数值)
second_value=$(echo "$response" | jq -r '.data[1].value')

方法2:遍历加条件判断实现

可以通过遍历数组+条件判断的方式完成,适配两种判断场景:按位置匹配第二个元素,或者按name字段值匹配目标元素:

# 先获取data数组总长度
array_length=$(echo "$response" | jq '.data | length')

# 遍历数组所有索引
for ((index=0; index<array_length; index++)); do
    # 按位置判断:匹配第二个元素(索引等于1)
    if [ $index -eq 1 ]; then
        target_value=$(echo "$response" | jq -r ".data[$index].value")
        echo "第二个对象的value值为:$target_value"
        break
    fi

    # 也可按字段值判断:匹配name为EFC的元素,取消下方注释即可使用
    # current_name=$(echo "$response" | jq -r ".data[$index].name")
    # if [ "$current_name" = "EFC" ]; then
    #     target_value=$(echo "$response" | jq -r ".data[$index].value")
    #     echo "name为EFC的对象的value值为:$target_value"
    #     break
    # fi
done

注意:不推荐用grep、awk等文本工具硬解析JSON,特殊格式场景下很容易出现解析错误,jq是Bash环境下处理JSON的最优选择。

内容的提问来源于stack exchange,提问作者user1555190

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:18:05