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

如何用jq在JSON文件中获取已知前一个键值对的下一组键值对

获取指定键的下一组键值对

你的原始JSON数据:

{
   "entry1":"",
   "entry2":"",
   "entry3":"value3",
   "entry4":"value4",
   "entry5":"",
   "entry6":" ",
   "entry7":"",
   "entry8":"false"
}

你当前的jq命令只能筛选出entry3的键值对,要拿到它的下一组(entry4及其值),可以用以下几种方式实现:

方式一:通过索引直接定位

这是最简洁的写法,利用数组索引找到目标键的位置后取后一位元素:

jq -r 'to_entries | .[(map(.key == "entry3") | index(true)) + 1] | .key, .value'

执行后会输出:

entry4
value4

如果想让输出格式更紧凑,比如entry4=value4,可以改成:

jq -r 'to_entries | .[(map(.key == "entry3") | index(true)) + 1] | "\(.key)=\(.value)"'

方式二:遍历匹配后取后续元素

如果需要更灵活的遍历逻辑(比如应对复杂的键顺序场景),可以用foreach遍历数组,找到entry3后捕获下一个元素:

jq -r 'to_entries | foreach .[] as $item ({found: false}; if .found then .result = $item | break elif $item.key == "entry3" then .found = true else . end; .result) | .key, .value'

核心逻辑说明

  • to_entries:将JSON对象转换为包含key和value字段的对象数组,方便按顺序操作
  • map(.key == "entry3") | index(true):在数组中定位entry3对应的元素索引
  • 索引+1:直接获取目标键的下一个元素,再提取其key和value

内容的提问来源于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 11:30:10