如何修复"JSON 文本格式不正确。在 SQL Server 中的位置 1 处发现意外字符"\"。"错误



我需要将JSON作为字符串传递给存储过程,然后使用OPENJSON转换该刺痛的JSON。输入参数需要为字符串格式,并且包含 \ scape 字符。

开放的JSON在SQL Server 2016中可用,我尝试使用没有"\"的OPENJSON,它完美地工作

此代码正在工作:

DECLARE @test1 NVARCHAR(MAX)='{"name":"john","age":22,"class":"mca"}'
SELECT * FROM OPENJSON(@test1)

这是行不通的:

DECLARE @test2 NVARCHAR(MAX)='{"name":"john smith","age":22,"class":"mca"}'
SELECT * FROM OPENJSON(@test2)

但是,这不是最好的方法:

DECLARE @test2 NVARCHAR(MAX) = '{"name":"john smith","age":22,"class":"mca"}';
SELECT j.* 
FROM OPENJSON('{"t":"' + @test2 + '"}') t
CROSS APPLY OPENJSON(t.[value]) j
;

另一种解决方案:

SELECT *
FROM OPENJSON(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@test2,'\t','t'),'\r','r'),'\n','n'),'\f','f'),'\b','b'),'"','"'),'\','')) t
;

最新更新