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

如何使用jq重命名JSON对象键并实现批量前缀查询?

解决jq键名添加前缀的问题

你需要将原JSON对象的每个键名加上user.前缀,重新生成新的对象,对应的jq命令如下:

cat file.txt | jq 'to_entries | map(.key = "user.\(.key)") | from_entries'

执行后会得到你想要的结果:

{
  "user.user1": 10,
  "user.joe": 13,
  "user.jane": 55
}

命令拆解说明:

  • to_entries:把原JSON对象转换成[{"key":"user1","value":10}, ...]格式的键值对数组
  • map(.key = "user.\(.key)"):遍历数组中的每个元素,将key字段的值替换为user.拼接原键名的新字符串
  • from_entries:把修改后的键值对数组重新转换回标准JSON对象

你之前的命令问题:

你用[.]| to_entries[]|.[$k] = $v的写法,是把整个原对象当作单个值,修改了外层键名为user,最终得到嵌套结构,而非给每个原键添加前缀,自然无法满足按user.*查询的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:47:07