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

如何在Python中为复杂JSON API Payload填充YAML数据?

解决YAML数据填充嵌套JSON模板的Python方案

核心思路

用Jinja2模板引擎处理JSON模板的占位符,它原生支持嵌套变量访问和数组循环渲染,能完美解决嵌套字典、数组结构的填充问题。

步骤1:改造JSON模板文件(json.txt)

把需要填充的位置改成Jinja2占位符格式:

  • 嵌套字典变量用{{ 父键.子键 }},比如{{ user.name }}
  • 数组循环用{% for 元素 in 数组键 %}和{% endfor %}包裹对应结构,注意处理元素间的逗号分隔

示例json.txt内容:

{
  "user": {
    "name": "{{ user.name }}",
    "age": {{ user.age }}
  },
  "orders": [
    {% for order in orders %}
    {
      "id": "{{ order.id }}",
      "amount": {{ order.amount }}
    }{% if not loop.last %},{% endif %}
    {% endfor %}
  ]
}

步骤2:准备YAML数据文件(tdata.yml)

保持正常的YAML嵌套结构即可,示例:

user:
  name: "Alice"
  age: 30
orders:
  - id: "ORD001"
    amount: 199.99
  - id: "ORD002"
    amount: 299.99

步骤3:编写Python代码

import yaml
from jinja2 import Template
import json

# 加载YAML数据
with open('tdata.yml', 'r', encoding='utf-8') as f:
    data = yaml.safe_load(f)

# 读取并渲染JSON模板
with open('json.txt', 'r', encoding='utf-8') as f:
    template = Template(f.read())
rendered_json = template.render(**data)

# 可选:将渲染后的字符串转为JSON对象(用于后续API请求)
final_payload = json.loads(rendered_json)

# 输出结果
print(rendered_json)

说明

  • Jinja2会自动处理嵌套字典的变量解析,循环语法能生成符合JSON格式的数组元素
  • 如果不需要生成字符串,直接用final_payload作为API请求的Payload即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 16:02:17