这是返回错误的代码, JSON 文本格式不正确。在位置 194 处发现意外字符“”。
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
最佳答案
您的 JSON 被截断 - 请参阅 JSON 的结尾:
选择子字符串(@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)
关于JSON 字符串已验证,但 SQL Server 2016 返回验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40454794/