将变量加载到JSON中

编程语言 2026-07-11

我有一个非常大的JSON文件,我需要其中的值来自另一个文件中全局定义的变量。有没有可能在这个JSON中使用与这些变量同名的占位符,以便在运行时加载?

示例:

我在resources文件夹中的JSON:

{
  "my_key": {variable1}
}

在keywords.robot中定义的变量

Set Global Variable    ${variable1}    123

我想在调用时发送的JSON:

{
  "my_key": 123
}

有没有办法在不为每一个实例都逐一设置key: value的情况下实现?

解决方案

当然,可以。你可以用一个小巧的Python脚本来渲染你的JSON模板,然后再把它解析回真正的JSON。

# json_template_lib.py
import json, re
from robot.api.deco import keyword

_RE = re.compile(r"\{([A-Za-z_]\w*)\}")

@keyword("Render Json Template")
def render_json_template(template_path, variables: dict):
    template_text = open(template_path, "r", encoding="utf-8").read()

    def repl(m):
        name = m.group(1)
        return json.dumps(variables[name])  # handles numbers/strings correctly

    rendered = _RE.sub(repl, template_text)
    return json.loads(rendered)

下面是用法。

*** Settings ***
Library    json_template_lib.py

*** Variables ***
${variable1}=    123

*** Test Cases ***
Send
    ${vars}=    Create Dictionary    variable1=${variable1}
    ${payload}=    Render Json Template    ${CURDIR}/resources/payload.json    ${vars}
    # then send ${payload} as your request body

这样你只需要把variable1设置一次,你的庞大的JSON模板就可以在任何地方重用 {variable1}。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章