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

如何用yq给JSON转YAML添加顶层映射并去除引号?

使用yq实现JSON转YAML的格式调整

原始文件与初始转换结果

原始JSON文件(input.json):

{
  "test1": {
      "POST": "{}",
      "GET": "{}"
  },
  "test2": {
      "HEAD": "{}",
      "GET": "{}"
  }
}

通过命令yq eval -P input.json --output-format=yaml转换为YAML后,得到如下结果:

test1:
  POST: '{}'
  GET: '{}'
test2:
  HEAD: '{}'
  GET: '{}'

需求说明

需要实现两个格式调整目标:

  • a) 添加名为config的顶层映射元素,将原有所有内容嵌套到该元素下;
  • b) 移除所有值为'{}'的单引号,将其转为YAML原生的空映射格式{}。

最终期望的YAML格式:

config:
  test1:
    POST: {}
    GET: {}
  test2:
    HEAD: {}
    GET: {}

优雅的yq实现命令

可以通过单条yq命令一次性完成两个需求(基于mikefarah/yq v4版本):

直接从JSON文件转换并调整

yq eval -P '{"config": .} | (.. | select(. == "{}")) = {}' input.json --output-format=yaml

从已转换的YAML文件调整

如果已经有初始转换后的YAML文件(比如output.yaml),可以用:

yq eval '{"config": .} | (.. | select(. == "{}")) = {}' output.yaml

命令解释

  • {"config": .}:将整个输入的内容作为值,赋值给顶层键config,完成需求a;
  • (.. | select(. == "{}")) = {}:递归遍历所有节点,筛选出值为字符串"{}"的元素,将其替换为YAML空映射{},自动去除单引号,完成需求b;
  • -P参数:启用JSON到YAML的格式化转换,保证输出结构整洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:25:21