我应该如何转义 JSON 中的字符串?

2024-01-10

手动创建JSON数据时,应该如何转义字符串字段?我应该使用 Apache Commons Lang 之类的东西吗StringEscapeUtilities.escapeHtml, StringEscapeUtilities.escapeXml,或者我应该使用java.net.URLEncoder?

问题是当我使用SEU.escapeHtml,它不会转义引号,当我将整个字符串包裹在一对中时's,将生成格式错误的 JSON。


理想情况下,找到您语言的 JSON 库您可以向其中提供一些适当的数据结构,并让它去担心如何逃避事情。它会让你更加清醒。如果出于某种原因您没有使用您的语言的库,您不想使用一个库(我不建议这样做),或者您正在编写一个 JSON 库,请继续阅读。

根据 RFC 对其进行转义。 JSON 相当自由:您唯一的字符must逃逸区\, "和控制代码(小于 U+0020 的任何代码)。

这种转义结构是 JSON 特有的。您将需要一个 JSON 特定函数。所有的转义都可以写成\uXXXX where XXXX是该字符的 UTF-16 代码单元。有一些快捷方式,例如\\,这也有效。 (它们会产生更小、更清晰的输出。)

有关完整详细信息,请参阅the RFC http://www.ietf.org/rfc/rfc4627.txt.

¹JSON 的转义是建立在 JS 之上的,因此它使用\uXXXX, where XXXX是UTF-16编码单元。对于 BMP 之外的代码点,这意味着对代理项对进行编码,这可能会有点麻烦。 (或者,您可以直接输出字符,因为 JSON 的编码是 Unicode 文本,并且允许这些特定字符。)

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

我应该如何转义 JSON 中的字符串? 的相关文章

随机推荐