You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server FOR JSON PATH自动在/前插入\转义的原因咨询

SQL Server FOR JSON PATH 自动为正斜杠添加转义符的原因

问题复现场景

在SQL Server环境中执行以下T-SQL语句,通过FOR JSON PATH生成结构化JSON结果:

Declare @ContractCode nvarchar(100) = N'02/HĐLĐ-NGG';
Declare @DateStartWork date = '2020-06-01';
Declare @DeptID int = 2;
Declare @PositionID int = 4;
Declare @HRDecisionID int = 614

Select @ContractCode as ContractCode,
       @DateStartWork as DateStartWork,
       @DeptID as DeptID,
       @HRDecisionID as HRDecisionID
For Json Path

执行后实际返回的JSON结果中,ContractCode字段内的正斜杠/被自动添加了反斜杠转义:

[{"ContractCode":"02\/HĐLĐ-NGG","DateStartWork":"2020-06-01","DeptID":2,"HRDecisionID":614}]

预期的无转义结果为:

[{"ContractCode":"02/HĐLĐ-NGG","DateStartWork":"2020-06-01","DeptID":2,"HRDecisionID":614}]

转义现象的核心原因

这个行为是SQL Server的默认设计逻辑,不属于功能bug:

  • 按照ECMA-404 JSON官方规范,正斜杠/属于可被合法转义的字符,转义写法\/完全符合JSON标准,所有合规的JSON解析器读取该内容时,都会自动将\/还原为普通正斜杠/,不会导致数据解析异常或内容错乱。
  • SQL Server默认开启该转义规则,主要是为了规避Web嵌入场景下的XSS安全风险:如果生成的JSON被直接嵌入HTML的<script>标签块中,未转义的</script>片段会被浏览器识别为脚本块结束标记,提前截断脚本执行造成注入漏洞,将斜杠转义为\/后即可规避这类问题。

注意:该转义结果本身是合法JSON,绝大多数业务场景不需要额外处理。如果强制要求输出不带转义符的正斜杠,不建议直接全局替换结果中的\/,避免误替换其他合法转义内容。

内容的提问来源于stack exchange,提问作者Le Anh Xuan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 12:45:30