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

如何用jq将含任意键的嵌套JSON对象转换为键值对象数组?

用jq转换嵌套JSON为指定数组的解决方案

刚好做过类似的处理,用jq的两个核心函数就能完美解决你的需求!

核心命令

直接执行这条jq命令就能得到你想要的输出:

to_entries | map({name: .key} + .value)

分步解释

咱们拆解一下这个命令的作用:

  1. to_entries:把原始的顶层JSON对象转换成由key和value组成的条目数组。拿你的示例输入来说,执行这一步后会变成:
    [
      {"key": "albert", "value": {"age": 35}},
      {"key": "sarah", "value": {"age": 33}},
      {"key": "otto", "value": {"age": 27}}
    ]
    
  2. map({name: .key} + .value):遍历上面的条目数组,对每个元素做两个操作:
    • 把原来的key(也就是人名)封装成{name: .key}对象
    • 用+符号把这个新对象和原来的value(包含age的对象)合并,最终得到每个包含name和age的完整对象

完整测试示例

假设你的JSON数据保存在input.json文件中,执行以下bash命令:

jq 'to_entries | map({name: .key} + .value)' input.json

输出结果就是你期望的数组:

[
  {"name":"albert","age":35},
  {"name":"sarah","age":33},
  {"name":"otto","age":27}
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:40:46