我想将 python 中的 JSON 字符串导出到 JS 变量中。
<script type="text/javascript">
var data = JSON.parse('{{ dataJSON }}');
console.log(data)
</script>
如果我打印 dataJSON
的内容,我得到:[{"offset":0,"total":1,"units":[{"village_id":37,"village_name":"Glim
但是在 JS 中我得到这个:JSON.parse('[{"offset":0,"total":1,"units" ;:[{"village_id":37
我使用 jinja2 模板引擎:http://jinja.pocoo.org/docs/dev/templates/#if
我该如何解决?
最佳答案
您需要将数据标记为安全:
var data = {{ dataJSON|safe }};
这可以防止它被 HTML 转义。没有必要以这种方式使用 JSON.parse()
; JSON 是一个有效的 JavaScript 子集(至少在 Python json
模块生成一个有效子集的范围内)。
请注意,这不会使其 JavaScript 安全。您可能需要调整 JSON 序列化。如果您使用的是 Flask,则会提供一个 tojson
过滤器,以确保您获得 JavaScript 安全的有效 JSON:
var data = {{ data|tojson|safe }};
如果您不使用 Flask,请对 JSON 进行后处理:
dataJSON = (json.dumps(data)
.replace(u'<', u'\\u003c')
.replace(u'>', u'\\u003e')
.replace(u'&', u'\\u0026')
.replace(u"'", u'\\u0027'))
这是生成 dataJSON
值的 Python 代码,该值可以在 HTML(包括属性值)和 JavaScript 中安全使用。这里归功于Flask json.htmlsafe_dumps()
function .
关于javascript - Python - 如何在 JS 中导出 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25747184/