适用于:SQL Server 2016 (13.x) 及更高版本
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics (仅限无服务器 SQL 池)
Microsoft Fabric 中的 SQL 分析终结点
Microsoft Fabric 中的仓库
Microsoft Fabric 中的 SQL 数据库
本文介绍了 SQL Server FOR JSON 语句的 SELECT 子句在 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 |
Example
下面是同时包含特殊字符和控制字符的源数据的 FOR JSON 输出的示例。
Query:
SELECT 'VALUE\ /
"' AS [KEY\/"],
CHAR(0) AS '0',
CHAR(1) AS '1',
CHAR(31) AS '31'
FOR JSON PATH;
Result:
[
{
"KEY\\\/\"": "VALUE\\ \/\r\n \"",
"0": "\u0000",
"1": "\u0001",
"31": "\u001f"
}
]
相关内容
- 使用 FOR JSON 将查询结果格式化为 JSON
- SELECT - FOR 子句 (Transact-SQL)
- JSON 充当 NoSQL 与关系环境之间的桥梁