JSON文本格式不正确。在位置0处发现意外字符'N'

时间:2018-10-12 15:45:17

标签: json sql-server-2016 sql-server-json

我是SQL JSON的新手。我收到错误消息“ JSON文本格式不正确。在位置0找到意外的字符'N'。”在执行以下命令时-

DECLARE @json1 NVARCHAR(4000)
set @json1 = N'{"name":[{"FirstName":"John","LastName":"Doe"}], "age":31, "city":"New York"}'
DECLARE @v NVARCHAR(4000)
set @v = CONCAT('N''',(SELECT value FROM OPENJSON(@json1, '$.name')),'''')
--select @v as 'v'
SELECT  JSON_VALUE(@v,'$.FirstName')

“ select @v as'v'”给了我

N'{"FirstName":"John","LastName":"Doe"}'

但是,在最后一个select语句中使用它会给我带来错误。

DECLARE @v1 NVARCHAR(4000)
set @v1 = N'{"FirstName":"John","LastName":"Doe"}'
SELECT  JSON_VALUE(@v1,'$.FirstName') as 'FirstName'

也可以。

2 个答案:

答案 0 :(得分:1)

您要在N语句中添加CONCAT字符。

尝试更改行:

set @v = CONCAT('N''',(SELECT value FROM OPENJSON(@json1, '$.name')),'''')

收件人:

set @v = CONCAT('''',(SELECT value FROM OPENJSON(@json1, '$.name')),'''')

答案 1 :(得分:0)

在我的情况下,在JSON校正sql服务器在OPENJSON函数中正常运行后,JSON字符串中存在一些不合适的字符