理想情况下,找到一种使用你的语言的JSON库,你可以向该库提供一些适当的数据结构,并使它担心如何转义。它会让你保持头脑清醒。如果出于某种原因你没有使用你的语言的库,或者你不想使用一个库(我不建议这样做¹),或者你正在编写JSON库,请继续阅读。
根据RFC对其进行转义。JSON是相当宽松:你唯一的字符必须逃脱是
,”和控制代码(东西不是U + 0020以下)。这种转义结构特定于JSON。你将需要JSON特定功能。所有逃逸的可以写成
uXXXX其中
XXXX是该字符的UTF-16代码unit¹。有一些快捷方式也可以使用,例如
\。(它们导致输出更小,更清晰。)
有关详细信息,请参见RFC。
¹JSON的转义是基于JS构建的,因此它使用
uXXXX,其中
XXXX为UTF-16代码单元。对于BMP之外的代码点,这意味着对代理对进行编码,这可能会有些毛茸茸。(或者,你可以直接输出字符,因为JSON的编码是Unipre文本,并且允许这些特殊字符。)



