Как исправить 'Текст JSON неправильно отформатирован.Неожиданный символ '\' находится в позиции 1. 'ошибка в SQL Server - PullRequest
1 голос
/ 18 апреля 2019

Мне нужно передать JSON хранимой процедуре в виде строки, а затем преобразовать этот код JSON с помощью OPENJSON. Входной параметр должен быть в строковом формате, и он содержит символы \ 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)

1 Ответ

1 голос
/ 18 апреля 2019

Однако не лучший подход:

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
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...