【问题标题】:Python - How to export JSON in JSPython - 如何在 JS 中导出 JSON
【发布时间】:2014-09-09 14:27:39
【问题描述】:

我想将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('[{&amp;#34;offset&amp;#34;:0,&amp;#34;total&amp;#34;:1,&amp;#34;units&amp;#34;:[{&amp;#34;village_id&amp;#34;:37

我使用jinja2模板引擎:http://jinja.pocoo.org/docs/dev/templates/#if

我该如何解决这个问题?

【问题讨论】:

标签: javascript python json jinja2


【解决方案1】:

您需要将数据标记为安全:

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

【讨论】:

    猜你喜欢
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    • 2019-10-04
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多