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

使用mikefarah/yq生成JSON时为何得到重复输出?

解决yq创建JSON时重复输出的问题

环境信息

  • yq版本:yq (https://github.com/mikefarah/yq/) version v4.44.3

问题重现

执行以下命令创建JSON结构:

yq -n -o=json '.a = 1,.b.c = 16 , .b.d = 12'

得到重复的两份JSON输出:

{
  "a": 1,
  "b": {
    "c": 16,
    "d": 12
  }
}
{
  "a": 1,
  "b": {
    "c": 16,
    "d": 12
  }
}

期望仅输出一份正确的JSON结构:

{
  "a": 1,
  "b": {
    "c": 16,
    "d": 12
  }
}

问题原因

命令中使用逗号分隔多个赋值表达式,在yq v4的语法规则里,逗号会触发每个表达式单独输出结果,因此最终得到多次重复的JSON结构。

解决方案

有两种方式可以实现单次输出:

方式1:用大括号包裹,分号分隔赋值操作

将所有赋值逻辑放在大括号内,用分号分隔每个操作,这样只会输出最终的完整结构:

yq -n -o=json '{.a = 1; .b.c = 16; .b.d = 12}'

方式2:用管道符连接赋值操作

通过管道符|串联多个赋值步骤,最终输出一次处理后的结果:

yq -n -o=json '.a = 1 | .b.c = 16 | .b.d = 12'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 02:31:10