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

jq无需显式指定数组索引将数组转换为单键值对象的实现方案

可行实现方案

你可以使用jq内置的from_entries工具或者reduce遍历语法实现需求,两种方案都无需硬编码数组索引,可适配任意长度的输入数组:

  • 方案1:使用from_entries(最简洁)
    from_entries是jq专门用于将{key, value}结构的数组转换为单个对象的内置函数,只需先将原数组的每个元素映射为符合要求的结构即可,命令如下:
echo '[{"name":"John", "age":30, "car":null},{"name":"Marc", "age":32, "car":null}]' | jq 'map({key: .name, value: .age}) | from_entries'

执行后输出结果和要求完全一致:

{
  "John": 30,
  "Marc": 32
}
  • 方案2:使用reduce遍历
    如果你需要更灵活的自定义逻辑,可以用reduce语法遍历数组所有元素,逐个拼接对象:
echo '[{"name":"John", "age":30, "car":null},{"name":"Marc", "age":32, "car":null}]' | jq 'reduce .[] as $item ({}; .[$item.name] = $item.age)'

两种方案都支持任意长度的输入数组,不需要提前知道数组元素数量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 11:45:01