django escapejs 和 simplejson

2024-03-27

我正在尝试使用 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 及更高版本包括HTML 的 JSON 编码器 http://simplejson.readthedocs.org/en/latest/index.html#simplejson.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 代码 https://github.com/simplejson/simplejson/blob/v3.10.0/simplejson/encoder.py#L378-L402相对较小,可能会被拉入早期代码或与Python 2.6+的json包 http://docs.python.org/2/library/json.html——虽然我自己还没有尝试过

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

django escapejs 和 simplejson 的相关文章

随机推荐

  • 无法在 C# 中运行禁用邮箱 Powershell

    我正在尝试用 C 重现 Powershell 的以下工作块 我们正在连接 Exchange2010 实例 ExURI http ExchangeUrl PowerShell Session New PSSession Configurati
  • 更改 onclick 事件,JavaScript 不起作用

    我有这个 function tp visible action if action 1 document getElementById tp style display block document getElementById tp ac
  • 按点击付费断点

    如何在 PPC 上 具体来说 在 OS X 上 实现断点 例如 在 x86 上 通常使用 INT 3 指令 0xCC 完成 对于 ppc 是否有与此类似的指令 或者还有其他设置 实施的方式吗 使用 gdb 和一个十六进制转储自身的函数 我得
  • 返回 Activity 而不重新创建(不调用 onCreate())

    我想问类似的问题 返回上一屏幕而不创建新实例 https stackoverflow com questions 11715848 go back to previous screen without creating new instan
  • 如何在 Rails 的 ERB 模板中使用 `<%=` 来修剪最后出现在 `pre` 元素中的前导空白?

    据我在这里研究 这不是一个重复的问题 修剪空格 通常是尾随换行符 正在讨论 但不适合 结果是 HTML 输出为 p strong Code strong p pre class highlight github span class kt
  • 使用 GAS 获取相当于持续时间的数字

    我有一个具有持续时间类型值的单元格 我已将值设置为 00 10 00 即 10 分钟 当我将单元格的格式更改为数字时 它将显示 0 01 如何以编程方式使用应用程序脚本获得与使用应用程序脚本代码相同的十进制等效值 00 10 00 是 0
  • HQL:按可空属性的属性排序

    假设有两个表 A a id b id and B b id c 我需要执行表单的 HQL 查询 From A a ORDER BY a b c while b在类中可以为空A 但是 该查询仅返回以下实例A其中有非空b财产 发生这种情况是因为
  • GC过多时如何更快OOM? [复制]

    这个问题在这里已经有答案了 有时 我的 JVM 会耗尽内存 但我可以从中恢复 或 heapDumpOnOOM 和调试 的 OOMing 它往往会在 GC 中颠簸数小时 然后抛出内存不足 这本质上与 未回答的 问题相同 如何配置 Java G
  • 计算 Laravel 中的坐标距离

    我的模型中有一个创建别名的范围 我需要在其上执行一个 where 我知道 MySql 不允许这样做 标准 SQL 不允许您在 WHERE 中引用列别名 条款 施加此限制是因为当 WHERE 代码为 执行后 列值可能尚未确定 但是 我想知道
  • 创建数组并在一行中将其推入其中

    以下只是一个理论上的 JavaScript 问题 我很好奇以下内容是否可以转换为单个语句 if window foo window foo window foo push bar 这段代码大家可能都写过 但是一行能完成吗 起初我以为这样的事
  • uml 与 RDF 和 OWL 的组合关系

    我是 RDF 和 OWL 本体的初学者 我正在尝试将此图转换为 OWL 语法
  • 带有 Angular 2 和 webpack 2 的单个单独的 CSS 文件?

    我有一个使用 Angular 2 和 Webpack 2 的简单应用程序 使用 sass 作为模板和 angular2 template loader 这样我就可以使用templateUrl and styleUrls而不是使用requir
  • 更改监听输入源

    我想用 AutoHotkey 更改我的显示器输入源 并且我已经部分工作了 但是 当我使用热键将显示器输入源从 pc DVI 更改为我的 xbox YPbYr 时 显示器未检测到 xbox 已打开 它显示没有源 显示器 gt 华硕 VG236
  • 适用于移动应用程序的最佳远程技术是什么?

    我有一个 java 后端 需要向在以下环境中运行的客户端公开服务 J2ME 视窗手机 iPhone 我正在寻找适合每个平台的最佳工具 我不会寻找一种在任何地方都适用的技术 我需要一些适合低速互联网访问的 轻型 东西 现在我正在使用 SOAP
  • 列出所有可用的 .NET 程序集

    列出所有可用的 NET 2 0 程序集的最佳方法是什么 所需列表的一个示例是当您在 NET 选项卡中执行 添加引用 时 MS Visual Studio 显示的列表 我读过 Visual studio 使用它自己的目录配置 GAC 和 NE
  • 如何在 Jenkins 中处理 github webhook 负载?

    我目前正在通过 GitHub Webhook 触发我的 Jenkins 构建 我将如何解析 JSON 有效负载 如果我尝试参数化我的构建并使用 payload 变量 GitHub webhook 将失败并出现以下错误 h2 HTTP ERR
  • let 与 var 性能[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我一直在阅读有关 ES6 Let 关键字与现有 var 关键字的内容 我有几个问题 我知道 作用域 是 let 和 var 之间的唯一
  • 如何在 Firefox 中允许键盘焦点链接?

    在 Webkit 浏览器中转到这个超简单的小提琴 然后单击输入 http jsfiddle net eK4TT http jsfiddle net eK4TT
  • 警告:没有 xauth 数据;使用虚假身份验证数据进行 X11 转发

    在从 Fedora 23 到 Centos 7 进行 ssh 连接时 我遇到了一个不幸的问题 命令ssh X user centos7 and ssh Y user centos7两者都打印警告 没有 xauth 数据 使用伪造的身份验证数
  • django escapejs 和 simplejson

    我正在尝试使用 simplejson dumps 将 Python 数组编码为 json In 30 s1 test