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"
}
]
后续步骤
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈