我是使用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。它标记为红色。语法错误,当我尝试合并时。
答案 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/"}