小编典典

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

all

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

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


阅读 228

收藏
2022-08-24

共1个答案

小编典典

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

根据 RFC 对其进行转义。JSON 非常自由:您 必须 转义的唯一字符是\"和控制代码(小于 U+0020 的任何字符)。

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

有关完整的详细信息,请参阅RFC

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

2022-08-24