2016-11-06 57 views
1

这是返回错误的代码, JSON文本格式不正确。意外的字符““”位置处发现194JSON字符串已验证,但SQL Server 2016返回验证错误

declare @json nvarchar(200); 
SET @json=N'["wclass",{"student":{"name":"Linda Jones","legacySkill":"Access, VB 5.0"}},{"student":{"name":"Adam Davidson","legacySkill":"Cobol,MainFrame"}},{"student":{"name":"Charles Boyer","legacySkill":"HTML, XML"}}]' 
Select * from OPENJSON(@json) 

的SQL Server 2016返回正确的结果,但有消息称它是无效的,有些错误

验证在这里测试: https://jsonformatter.curiousconcept.com/ RFC:4627

+0

这是超过200个字符。 – GSerg

+0

你是对的,有超过200个字符 – user2063329

回答

1

你JSON是截断 - 看到JSON的末尾:

select substring(@json,194, len(@json))

这将工作:

declare @json nvarchar(4000); 
SET @json=N'["wclass",{"student":{"name":"Linda Jones","legacySkill":"Access, VB 5.0"}},{"student":{"name":"Adam Davidson","legacySkill":"Cobol,MainFrame"}},{"student":{"name":"Charles Boyer","legacySkill":"HTML, XML"}}]' 
Select * from OPENJSON(@json)