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

jq 1.5条件筛选JSON数组脚本能否简化及优化咨询

jq 1.5 嵌套对象筛选与脚本简化方案

问题根源

你使用from_entries报错的原因是:原.data是数组,to_entries会将数组转换为以数字索引为key的键值对列表,但jq 1.5不允许数字作为对象键,直接调用from_entries就会触发"Cannot use number as object key"的错误。

最优简化脚本

方案一:直接修改原字段(最简洁高效)

无需额外转换,直接对.data数组做筛选并保留原结构:

.data |= map(select(.age > 9))

逻辑说明:

  • |= 操作符直接修改原JSON中的.data字段
  • map(select(.age > 9)) 筛选出年龄≥10的元素(>9等价于≥10)
  • 自动保留原数据结构,无需手动重新包装{data: .}

方案二:链式重组结构

如果偏好链式写法,可直接筛选后重组:

{data: .data | map(select(.age > 9))}

这个版本比你原来的脚本省去了to_entries和后续拆包步骤,逻辑更直接。

原脚本的冗余点说明

你原来的脚本.data | to_entries | map(select(.value.age>9)) | [.[].value] | {data: .}做了多余的转换:

  1. to_entries把数组转成键值对列表完全没必要
  2. 最后通过[.[].value]拆包再包装{data: .},不如直接对数组筛选后重组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 22:36:05