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

如何使用jq处理JSON对象并生成单行逗号分隔输出?

解决你的jq相关问题

嘿,我完全懂这种“以为操作超简单结果卡壳”的感觉,咱来一步步解决这两个jq问题:

问题1:合并两个对象并输出单行逗号分隔的结果

这里分两种常见场景,我都给你具体解法:

场景A:合并两个对象后,提取所有值并以逗号分隔输出

比如你有两个输入对象:

{"name": "Alice", "age": 30}
{"city": "New York", "job": "Engineer"}

想要合并后得到值的逗号分隔结果:Alice,30,New York,Engineer

可以用这条命令:

jq -n 'input + input | [.[]] | join(",")'

解释一下:

  • -n:让jq从空输入开始,手动读取输入的对象
  • input + input:把两个输入对象合并成一个新对象
  • [.[]]:把合并后对象的所有值提取出来放到数组里
  • join(","):把数组元素用逗号连接成单行字符串

场景B:合并两个对象后,输出键=值格式的逗号分隔结果

如果想要得到name=Alice,age=30,city=New York,job=Engineer这样的结果,用这条命令:

jq -n 'input + input | to_entries | map("\(.key)=\(.value)") | join(",")'

解释:

  • to_entries:把对象转成{"key": "...", "value": "..."}的数组
  • map("\(.key)=\(.value)"):把每个条目转成键=值的字符串
  • 最后用join(",")连接成单行

问题2:处理两个{ "foo": "bar" }和{ "foo": "baz" },得到bar,baz

这个有两种简单的写法,任选其一就行:

方法1:用-s选项把输入转成数组处理

jq -s 'map(.foo) | join(",")'

解释:

  • -s(--slurp):把所有输入的JSON对象合并成一个数组,也就是变成[{"foo":"bar"}, {"foo":"baz"}]
  • map(.foo):提取数组中每个对象的foo值,得到["bar", "baz"]
  • join(","):把数组转成逗号分隔的单行字符串

方法2:手动读取两次输入

jq -n '"\(input.foo),\(input.foo)"'

解释:

  • -n:从空输入开始,input每次读取一个JSON对象
  • "\(input.foo),\(input.foo)":分别读取两个对象的foo值,拼接成逗号分隔的字符串

两种方法都能得到你想要的bar,baz结果~

内容的提问来源于stack exchange,提问作者mellow-yellow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:33:38