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

已知secretValue值,如何用jq获取对应及下一组JSON键值对

解决方案:定位JSON数组中目标元素及下一个元素

首先假设你的JSON结构类似如下(若实际结构不同,可对应调整jq路径):

{
  "globalSecrets": [
    {"secretName": "secretName1", "secretValue": "secretValue1"},
    {"secretName": "secretName5", "secretValue": "secretValue5"},
    {"secretName": "secretName6", "secretValue": "secretValue6"},
    {"secretName": "secretName7", "secretValue": "secretValue7"}
  ]
}

核心jq命令

通过索引定位目标元素,再提取当前元素的secretName和下一个元素的对应字段:

.globalSecrets
| (index(select(.secretValue == "secretValue5"))) as $idx
| {
    current_secretName: .[$idx].secretName,
    next_element: {
      secretName: .[$idx + 1].secretName,
      secretValue: .[$idx + 1].secretValue
    }
  }

执行后输出结果:

{
  "current_secretName": "secretName5",
  "next_element": {
    "secretName": "secretName6",
    "secretValue": "secretValue6"
  }
}

边界情况处理

如果目标元素不存在,或是数组最后一个元素(无下一项),可加入判断避免报错:

.globalSecrets
| (index(select(.secretValue == "secretValue5"))) as $idx
| if $idx != null and $idx + 1 < length then
    {
      current_secretName: .[$idx].secretName,
      next_element: {
        secretName: .[$idx + 1].secretName,
        secretValue: .[$idx + 1].secretValue
      }
    }
  else
    {result: "目标元素未找到,或为数组最后一个元素"}
  end

原命令失效的可能原因

  • JSON结构不符:比如globalSecrets并非直接根字段,需调整路径(如.config.globalSecrets)
  • 匹配精度问题:secretValue存在大小写、空格或特殊字符,需确保匹配字符串完全一致
  • 未处理索引边界:原命令未判断目标元素是否为最后一项,导致取$idx+1时返回null
  • 索引逻辑错误:原命令可能用了错误的定位方式(如未正确使用index或nth)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 02:33:27