从表格数据转换为json时避免转义字符

时间:2019-05-08 06:39:23

标签: json tsql

我使用FOR JSON PATH语法将表格数据转换为JSON时遇到一些问题:

如果我执行标准查询:

SELECT b.Name FROM dbo

我得到以下格式的结果:12 / 5-A-1。我需要将其转换为JSON数据而不转义反斜杠字符。但是,当我将其转换为JSON时:

SELECT b.Name FROM dbo FOR JSON PATH, WITHOUT ARRAY_WRAPPER

结果的格式为:{"Name": "12\/5-A-1"}

如何在不转义反斜杠字符并获得结果{"Name": "12/5-A-1"}的情况下进行此转换?

1 个答案:

答案 0 :(得分:1)

一种选择是使用公用表表达式生成json,然后在从公用表表达式中进行选择时简单地使用replace

首先,创建并填充示例数据(在您将来的问题中为我们保存此步骤):

DECLARE @T AS TABLE
(
    [Name] nvarchar(10)
)

INSERT INTO @T ([Name]) VALUES ('12/5-A-1');

CTE:

WITH CTE(Escaped) AS
(

    SELECT [Name]
    FROM @T
    FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
)

最终选择:

SELECT REPLACE(Escaped, '\/','/') As Result
FROM CTE 

结果:

{"Name":"12/5-A-1"}