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

如何解析docker/bake-action输出的非标准JSON格式metadata?

解决docker/bake-action输出非标准JSON无法被jq解析的问题

方法1:用HJSON工具转成标准JSON(推荐)

HJSON原生支持解析无引号键的非标准JSON,能直接转成jq可识别的标准格式:

  1. 在GitHub Actions工作流中先安装hjson(以npm为例):
    - name: Install hjson
      run: npm install -g hjson
    
  2. 直接处理输出或本地文件:
    # 直接解析action输出
    echo "${{ steps.monorepo-build.outputs.metadata }}" | hjson -j | jq '.mykey'
    # 处理已写入的文件
    hjson -j metadata.txt | jq '.mykey'
    

hjson -j参数的作用就是把非标准的HJSON转成标准JSON,之后jq就能正常解析顶级键mykey了。

方法2:用sed手动补全键的引号(仅适合简单结构)

如果不想额外安装工具,且输出结构简单(只有顶级键缺失引号),可以用sed给键批量添加双引号:

echo "${{ steps.monorepo-build.outputs.metadata }}" | sed -E 's/^([a-zA-Z0-9_]+):/"\1":/g' | jq '.mykey'

注意:这个命令只处理行首的键,要是输出包含嵌套结构,可能会失效,适合临时救急场景。

方法3:调整docker bake配置,输出标准JSON

从源头解决问题,修改你的docker bake配置(比如docker-bake.hcl),确保输出的metadata是标准JSON格式:
比如在bake配置中使用jsonencode函数处理输出内容,或者在执行bake时添加--print参数强制输出标准JSON,替换原有的输出方式。


内容的提问来源于stack exchange,提问作者sc-leeds

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 16:38:13