gpt4 book ai didi

django escapejs 和 simplejson

转载 作者:行者123 更新时间:2023-12-03 15:52:11 25 4
gpt4 key购买 nike

我正在尝试使用 simplejson.dumps 将 Python 数组编码为 json:

In [30]: s1 = ['test', '<script>']

In [31]: simplejson.dumps(s1)
Out[31]: '["test", "<script>"]'

工作正常。

但我想在调用 simplejson.dumps 之前先转义字符串(使用 Django 中的 escapejs):
In [35]: s_esc
Out[35]: [u'test', u'\\u003Cscript\\u003E']

In [36]: print simplejson.dumps(s_esc)
["test", "\\u003Cscript\\u003E"]

我的问题是:我希望转义字符串为: ["test", "\u003Cscript\u003E"]而不是 ["test", "\\u003Cscript\\u003E"]
我可以用 replace :
In [37]: print simplejson.dumps(s_esc).replace('\\\\', '\\')
["test", "\u003Cscript\u003E"]

但这是一个好方法吗?我只想先转义字符串,然后再将它们编码为 json。所以当我在模板中使用它们时不会有语法错误。

谢谢。 :)

最佳答案

simplejson 2.1.0 及更高版本包含 JSONEncoderForHTML编码器完全符合您的要求。要在您的示例中使用它:

>>> s1 = ['test', '<script>']
>>> simplejson.dumps(s1, cls=simplejson.encoder.JSONEncoderForHTML)
'["test", "\\u003cscript\\u003e"]'

我最近遇到了这个问题,我无法控制生成数据结构的代码,因此我无法在组装字符串时对其进行转义。 JSONEncoderForHTML 在输出点巧妙地解决了这个问题。

当然,您需要有 simplejson 2.1.0 或更高版本。 (Django 曾经有一个旧版本,Django 1.5 完全弃用了 django.utils.simplejson。)如果由于某种原因无法升级, JSONEncoderForHTML code相对较小,可能会被拉入早期代码或与 Python 2.6+'s json package 一起使用——虽然我自己没试过

关于django escapejs 和 simplejson,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7784303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com