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

如何在Linux环境下使用jq实现指定JSON结构转换?

使用jq实现指定JSON转换

核心思路

要实现将key1数组的每个元素与key2数组对应位置的元素用-拼接,同时保留key2不变,可通过jq的数组操作和字段赋值功能完成。

方法1:固定长度数组的直接写法

如果确定两个数组长度固定为2,可直接通过索引访问元素拼接:

jq '.key1 = [.key1[0] + "-" + .key2[0], .key1[1] + "-" + .key2[1]]' input.json
  • .key1 = [...]:重新赋值key1字段
  • .key1[n] + "-" + .key2[n]:取两个数组第n位元素,用-连接

方法2:通用写法(适配任意长度数组)

如果数组长度不固定,用transpose转置数组后批量拼接:

jq '.key1 = ([.key1, .key2] | transpose | map(join("-")))' input.json
  • [.key1, .key2]:将两个数组打包成二维数组
  • transpose:把二维数组转置,得到[[val1,v1], [val2,v2]]的分组结构
  • map(join("-")):对每组元素用-拼接,生成新数组
  • .key1 = ...:将新数组赋值给key1

示例验证

假设输入文件input.json内容为:

{
    "key1": ["val1", "val2"],
    "key2": ["v1", "v2"]
}

执行上述任意命令后,输出结果为:

{
    "key1": ["val1-v1", "val2-v2"],
    "key2": ["v1", "v2"]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 05:24:58