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

如何使用JQ在JSON顶部插入指定键值对?

在JQ中将键值对插入到指定键之前的方法

没问题,我来帮你搞定这个需求!JQ 1.5及以上版本支持保留JSON对象的键顺序,针对你要把"k0": 0插入到"k1": 1之前的需求,这里有两种实用方法,你可以根据场景选择:

方法一:快速合并(适合原对象仅含k1或希望新键排在最前的场景)

如果你的原始JSON就是{"k1": 1},直接用对象合并就能一步到位:

jq '{"k0": 0} + .' input.json

原理:先创建一个包含k0的新对象,再和原对象合并。JQ会保留左侧对象的键顺序,右侧原对象的键会自动追加在后面,最终输出正好是你想要的:

{ "k0": 0, "k1": 1 }

方法二:精准插入(适合原对象有多个键,需指定位置的场景)

如果你的原始JSON还有其他键(比如{"k2": 2, "k1": 1, "k3": 3}),要把k0精准插到k1前面,可以借助数组转换来实现:

jq 'to_entries | (map(.key) | index("k1")) as $pos | .[0:$pos] + [{key:"k0", value:0}] + .[$pos:] | from_entries' input.json

步骤拆解:

  1. to_entries:把JSON对象转换成键值对数组(比如[{"key":"k2","value":2},{"key":"k1","value":1},{"key":"k3","value":3}])
  2. (map(.key) | index("k1")) as $pos:找到k1在数组中的位置索引,存到变量$pos里
  3. .[:$pos] + [{key:"k0",value:0}] + .[$pos:]:在数组的$pos位置插入新的键值对条目
  4. from_entries:把处理后的数组转换回JSON对象

这样操作后,k0会准确出现在k1的前面,其他键的顺序完全保持不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 18:32:42