python-如何将变量传递给JSON?

时间:2020-06-04 12:57:40

标签: python json

我是使用JSON的新手,所以请先对这个愚蠢的问题感到抱歉。

我想用value字段中的变量编写JSON。看起来像这样:

def print_json(user_name):
    opened_json = open('way/to/json/file')
    tmp = json.load(opened_json)

    res = tmp(['path_to_folder'](user_name))
    print(res)

def main(user_name):
    print_json(user_name)


main('user')

它是JSON:

{"path_to_folder": "/Users/" + user_name + "/my_folder/"}

等待该输出:

/Users/user/my_folder/

请告诉我这里是否有解决方案。

谢谢!

编辑:我的问题是,我无法正确将变量添加到JSON。它标记为红色。语法错误,当我尝试合并时。

1 个答案:

答案 0 :(得分:3)

您想要的东西在JSON中无法直接实现,因为它不支持“模板化”。

一种解决方案是使用诸如Jinja之类的模板语言编写JSON模板,然后在没有json库的情况下加载该文件,并使用Jinja填写值,最后使用{{ 1}},从您呈现的字符串中加载字典。

您的类似json的文件可能看起来像这样:

json.loads

您的Python代码:

{"path_to_folder": "/Users/{{ user_name }}/my_folder/"}

实际上,如果这只是一次简单的事情,那么使用Python的内置模板甚至会更好。在JSON的情况下,我建议您使用旧式格式,因为否则,您必须避免使用大括号:

JSON文件:

import json
from jinja2 import Environment, FileSystemLoader

env = Environment(
    FileSystemLoader("path/to/template")
)
template = env.get_template("template_filename.json")

def print_json(username):
    return json.loads(
        template.render(user_name=username)
    )
...

“呈现”:

{"path_to_folder": "/Users/%(user_name)s/my_folder/"}
相关问题