Javascript Python-如何在JS中导出JSON

Javascript Python-如何在JS中导出JSON,javascript,python,json,jinja2,Javascript,Python,Json,Jinja2,我想将python中的JSON字符串导出到JS变量中 <script type="text/javascript"> var data = JSON.parse('{{ dataJSON }}'); console.log(data) </script> var data=JSON.parse({{dataJSON}}'); console.log(数据) 如果我打印dataJSON的内容,我会得到:[{“offset”:0,“total”:1,“u

我想将python中的JSON字符串导出到JS变量中

<script type="text/javascript">
    var data = JSON.parse('{{ dataJSON }}');
    console.log(data)
</script>

var data=JSON.parse({{dataJSON}}');
console.log(数据)
如果我打印
dataJSON
的内容,我会得到:
[{“offset”:0,“total”:1,“units”:[{“village_id”:37,“village_name”:“Glim

但是在JS中我得到了这样的结果:
JSON.parse('[{&";offset";:0,";total";:1,";units";:[{";village#id";:37

我使用jinja2模板引擎:


如何修复此问题?

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

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=(json.dumps(数据)
.替换(u'',u'\\u003e')
.替换(u'&',u'\\u0026')
.替换(u“”,u'\\u0027'))

这是一段Python代码,用于生成一个可以在HTML(包括属性值)和JavaScript中安全使用的
dataJSON
值。这里的功劳是。

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

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=(json.dumps(数据)
.替换(u'',u'\\u003e')
.替换(u'&',u'\\u0026')
.替换(u“”,u'\\u0027'))

这是Python代码,用于生成可在HTML中安全使用的
dataJSON
值(包括属性值)在JavaScript.Credit中,.

您使用的是什么模板语言?Django,Jinja2,其他什么?
Jinja2
您使用的是什么模板语言?Django,Jinja2,其他什么?
Jinja2