FOR JSON 如何转义特殊字符和控制字符 (SQL Server)

适用范围:SQL Server 2016 (13.x) 及更高版本 Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics(仅限无服务器 SQL 池)

本文介绍了 SQL Server SELECT 语句的 FOR JSON 子句在 JSON 输出中如何转义特殊字符以及如何表示控制字符。

重要

此页介绍了 Microsoft SQL Server 中对 JSON 的内置支持。 有关 JSON 中的转义和编码的常规信息,请参阅 JSON RFC 中的 2.5 节。

特殊字符转义

如果源数据包含特殊字符,则 FOR JSON 子句在 JSON 输出中会使用 \ 对其进行转义,如下表中所示。 在属性名称及其值中,均会发生这种转义。

特殊字符 转义后的输出
引号 (") \"
反斜杠 (\) \\
斜杠 (/) \/
Backspace \b
换页 \f
换行 \n
回车 \r
水平制表符 \t

控制字符

如果源数据包含控制字符,则 FOR JSON 子句在 JSON 输出中会使用 \u<code> 格式对其进行编码,如下表中所示。

控制字符 编码后的输出
CHAR(0) \u0000
CHAR(1) \u0001
[.] [.]
CHAR(31) \u001f

示例

下面是同时包含特殊字符和控制字符的源数据的 FOR JSON 输出的示例。

查询:

SELECT 'VALUE\    /
  "' AS [KEY\/"],
    CHAR(0) AS '0',
    CHAR(1) AS '1',
    CHAR(31) AS '31'
FOR JSON PATH;

结果:

[
    {
        "KEY\\\/\"": "VALUE\\    \/\r\n  \"",
        "0": "\u0000",
        "1": "\u0001",
        "31": "\u001f"
    }
]

后续步骤