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

如何用Go版yq遍历复杂YAML并提取信息转换为JSON?

用Go版yq一步实现目标JSON转换

不用写Bash循环遍历,直接用Go版yq的内置函数就能完成需求,核心命令如下:

yq -o json '.content.images | map({( .image ): .layers | map(.digest | sub("^sha256:"; ""))}) | add' your-file.yaml

命令拆解:

  • .content.images:定位到YAML中存储镜像信息的数组
  • map({( .image ): ...}):遍历数组中的每个镜像对象,将.image字段的值作为输出对象的键
  • .layers | map(.digest | sub("^sha256:"; "")):处理每个镜像的layers数组,提取digest并移除开头的sha256:前缀,生成纯哈希值列表
  • add:将map生成的多个键值对对象合并为一个顶层JSON对象
  • -o json:指定最终输出格式为JSON

示例验证

假设你的YAML内容如下:

content:
  images:
    - image: "nginx:latest"
      layers:
        - digest: "sha256:a1b2c3d4"
        - digest: "sha256:e5f6g7h8"
    - image: "ubuntu:22.04"
      layers:
        - digest: "sha256:i9j0k1l2"

执行命令后会输出:

{
  "nginx:latest": ["a1b2c3d4", "e5f6g7h8"],
  "ubuntu:22.04": ["i9j0k1l2"]
}

这种方法完全避开了Bash处理复杂嵌套结构的痛点,直接用yq的原生语法完成转换,效率和可靠性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:42:36