Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask Jinja2-解析JSON_Python_Json_Flask_Jinja2 - Fatal编程技术网

Python Flask Jinja2-解析JSON

Python Flask Jinja2-解析JSON,python,json,flask,jinja2,Python,Json,Flask,Jinja2,我尝试在Jinja2 HTML模板中显示一些JSON结果,但它返回一个空页面,或者返回新行上JSON的每个字符,或者返回带空格的每个字符 我要发送到Jinja2模板的对象如下所示: [ { "name": "John", "lastname": "Smith", "age": 22, "likes": [ {"fruits": ["bananas", "oranges"] }, {"

我尝试在Jinja2 HTML模板中显示一些JSON结果,但它返回一个空页面,或者返回新行上JSON的每个字符,或者返回带空格的每个字符

我要发送到Jinja2模板的对象如下所示:

[
  {
    "name": "John",
     "lastname": "Smith", 
     "age": 22, 
     "likes": [
       {"fruits": 
         ["bananas", "oranges"]
         }, 
       {"sweets": 
         ["chocolate"]
         }
       ]
     }
   ]
要将JSON对象发送到Jinja2模板,我使用:

render_template("report.html", items=items)
在Jinja2模板HTML上,如果我使用
{{items}
,它会将整个对象显示为文本。 如果我试图获取
{{items['name']}}
它将不会在页面上显示任何内容,页面将完全为空

我也试过了

{% for x in items %}
{{ x }}
{% endfor %}
它只显示相同的“文本”,但有间距:

在HTML文件中,我尝试执行以下操作:

<div id="name">{{ items['name'] }}</div>
{{items['name']}

如何显示我要传递给Jinja2的JSON对象中的对象?

嘿,因此您拥有的JSON是一个数组而不是一个对象,因此您必须考虑到这一点,首先访问您想要的对象,然后访问属性

<div id="name">{{ items[0]['name'] }}</div>  

嘿,所以你拥有的json是一个数组而不是一个对象,所以你必须考虑到这一点,首先访问你想要的对象,然后访问属性

<div id="name">{{ items[0]['name'] }}</div>  

我想我已经结束了

我必须先转储对象,然后加载新对象

r = json.dumps(json_onject)
loaded_r = json.loads(r)
return render_template("report.html", items=loaded_r)

现在我可以使用JSON对象中的任何值。

我想我到此为止了

我必须先转储对象,然后加载新对象

r = json.dumps(json_onject)
loaded_r = json.loads(r)
return render_template("report.html", items=loaded_r)

现在,我可以使用JSON对象中的任何值。

我有一个稍微修改过的示例,它对我非常有用:

app.py:

link_chart_data = {
    "type":
    "LinkChart",
    "items": [{
        "type": "node",
        "id": "ac1",
        "u": "static/icons/bank.png",
        "t": "45081063"
    }]
}

@app.route('/link_chart')
def covid():
    return render_template("link_chart/index.html", flask_data=link_chart_data)
然后在templates/link_chart/index.html中:

<script>
    const parsedData = JSON.parse('{{ flask_data|tojson }}');
    const unparsedData = '{{ flask_data }}'
    console.log('parsed', parsedData)
    console.log('unparsed', unparsedData)
</script>
^^这就是我想要的。一个新的JSON对象

以及:

^^我真的不想要

|tojson
jinja模板是一个变量,因此它以与python(flask)相同的格式进行传递。
JSON.parse()
javascript函数将它从字符串转换为javascript中的JSON对象


我希望这能有所帮助。

我有一个稍微修改过的例子,对我来说非常有效:

app.py:

link_chart_data = {
    "type":
    "LinkChart",
    "items": [{
        "type": "node",
        "id": "ac1",
        "u": "static/icons/bank.png",
        "t": "45081063"
    }]
}

@app.route('/link_chart')
def covid():
    return render_template("link_chart/index.html", flask_data=link_chart_data)
然后在templates/link_chart/index.html中:

<script>
    const parsedData = JSON.parse('{{ flask_data|tojson }}');
    const unparsedData = '{{ flask_data }}'
    console.log('parsed', parsedData)
    console.log('unparsed', unparsedData)
</script>
^^这就是我想要的。一个新的JSON对象

以及:

^^我真的不想要

|tojson
jinja模板是一个变量,因此它以与python(flask)相同的格式进行传递。
JSON.parse()
javascript函数将它从字符串转换为javascript中的JSON对象


我希望这能有所帮助。

我尝试在Python中使用JSON.dumps进行JSON解析,但没有成功。 但是,重命名了HTML文件

Of:
index.html

发件人:
index.html.jinja


并在Python应用程序中重命名

示例:
return render\u模板('index.html.jinja',products=products)


成功了!!

我尝试在Python中使用JSON.dumps进行JSON解析,但没有成功。 但是,重命名了HTML文件

Of:
index.html

发件人:
index.html.jinja


并在Python应用程序中重命名

示例:
return render\u模板('index.html.jinja',products=products)


它起作用了!!

当你说JSON…你是说python对象?Jinja2将python对象渲染到templates.dictionary,是的…当你说JSON…你是指python对象?Jinja2将python对象渲染到templates.dictionary,是的…谢谢你的回答..但是,如果我制作一个对象`items=dict()items['name']=“John”返回render_模板(“report.html”,items=items)`并尝试打印items['name']它仍然返回一个空页面。感谢您的回复..但是,如果我正在制作一个对象`items=dict()items['name']=“John”返回render_模板(“report.html”,items=items)`并尝试打印items['name']它仍然返回一个空页。谢谢@Sharpie,它像一个咒语一样工作=)谢谢@Sharpie,它像一个咒语一样工作=)