javascript - Python - 如何在 JS 中导出 JSON

标签 javascript python json jinja2

我想将 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/

相关文章:

javascript - vue 绑定(bind)复选框选中函数结果并向其传递一个值

javascript - 向页面上的所有 AJAX 请求添加 "hook"

javascript - Jquery Mobile(SPA)禁用浏览器后退按钮并刷新?

python - 修改按位 Karatsuba 算法以处理负数的最佳方法是什么?

python - Windows Live 登录 API SSL 问题 - Python

json - 如何在 ASP.NET 中将 JSON 反序列化为简单的 Dictionary<string,string>?

javascript - AutoPostBack 仅在 Chrome 的 Javascript 控制台打开时有效

python - 使用python登录NAS

javascript - 在 JavaScript 中重新初始化 json 变量

json - Django : DRF Token based Authentication VS JSON Web Token