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

如何用jq及其他工具在Bash中实现基于JSON模型的简单模板渲染?

jq实现JSON驱动的模板渲染

jq完全支持这类基于JSON数据的模板渲染,而且天生适配JSON结构,比envsubst更高效简洁,能直接处理嵌套数组、对象这类复杂JSON路径的插值需求。

具体实现步骤

假设你有:

  • JSON数据文件 data.json:
{
  "a": 1,
  "b": [1, 2],
  "c": [{
    "x": 1
  }, {
    "x": 2
  }]
}
  • 模板文件 template.txt:
A is {.a} and B is an array {.b}.
There is also c[].x = {.c[].x}

方法:通过sed转换模板格式 + jq渲染

执行以下命令即可得到预期结果:

# 将模板中的{.path}转换为jq支持的插值语法
render_template=$(sed 's/{.\([^}]*\)}/\($data\1)/g' template.txt)
# 用jq加载JSON数据并渲染模板
jq --arg tmpl "$render_template" -n '$data = input; printf "\($tmpl)"' data.json

结果验证

执行后会输出:

A is 1 and B is an array [1,2].
There is also c[].x = [1,2]

核心优势

  • 原生支持JSON路径解析:像.c[].x这类嵌套数组的取值,jq能直接提取所有x字段值组成数组,无需额外处理;
  • 自动类型转换:JSON中的数字、数组会自动转换成符合预期的字符串格式,无需手动拼接;
  • 避免envsubst的繁琐:无需把JSON拆成环境变量,直接基于原始JSON数据渲染。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:17:40