通过python和jinja获取json字典值

通过python和jinja获取json字典值,python,json,dictionary,flask,jinja2,Python,Json,Dictionary,Flask,Jinja2,我有一个json字典,我用python将它传递给jinja。 该页面无法正常工作。不确定这是否是正确的语法 {% with open(jsonobject, 'r') as f json_data = json.load(f) for a, (b,c) in json_data.items() %} --------------编辑----------- 这是传递int的json对象中的一个大字典,看起来像这样 {"Dogs": [["spot"], 1], "Cats": [["

我有一个json字典,我用python将它传递给jinja。 该页面无法正常工作。不确定这是否是正确的语法

{% with open(jsonobject, 'r') as f
   json_data = json.load(f)
   for a, (b,c) in json_data.items() %}
--------------编辑----------- 这是传递int的json对象中的一个大字典,看起来像这样

{"Dogs": [["spot"], 1], "Cats": [["whiskers"], 1], "fish": [["bubbles", "lefty", "tank", "goldie"], 4], "elephant": [["tiny", "spring"], 2], "zebra": [[], 1], "gazelle": [["red", "blue", "green", "yellow", "gold", "silver"], 6]}

您最好在view函数中将JSON解码为python字典,并将其传递到jinja:

import json

@app.route("/something")
def something():
    with open('myfile.json', 'r') as f:
        json_data = json.loads(f.read())
    return render_template("something.html", json_data=json_data)
something.html:

<dl>
{% for key, value in json_data.iteritems() %}
    <dt>{{ key|e }}</dt>
    <dd>{{ value|e }}</dd>
{% endfor %}
</dl>

{%表示键,json_data.iteritems()中的值%}
{{key | e}}
{{value | e}}
{%endfor%}

如果您的目标是打印一个漂亮的
json
字符串,那么最好在将其传递给
jinja
之前准备好实际的字符串

在视图中,可以执行以下操作:

import json

@app.route("/something")
def something():
    with open('myfile.json', 'r') as f:
        json_data = json.loads(f.read())
        formatted_json = json.dumps(
            json_data,
            sort_keys=True,
            indent=4,
            separators=(',', ': '))
    return render_template("something.html", json=formatted_json)
something.html
中,只需打印已格式化的变量:

{{ json }}

您可以在

中阅读更多关于json字符串格式的信息。您可以提供您遇到的错误。至少,你在f之后少了一种颜色。for循环语法不正确