我在包含 json 对象的用户表中有一个 JSON blob 列(例如 Groups),如下所示:
{Security:[1,5],Reporting:[2,8]}
如果我尝试使用 JSON_QUERY 查询该表,则会收到格式错误的错误。所以例如
SELECT JSON_QUERY([Groups],'$.Security') from User
退货
JSON 文本格式不正确。在位置 1 发现了意外的字符“S”。
原因是 SQL Server 中的 JSON blob 似乎坚持在对象属性上使用双引号。因此,如果上面的 JSON 看起来像这样(注意双引号),那么一切都很好。
{"Security":[1,5],"Reporting":[2,8]}
问题是我在 C# 应用程序中使用 ServiceStack,该应用程序基于预定义的用户 poco 自动构建此 JSON blob,并通过 API 直接插入数据库。当它按照 POCO 上预定义的方式插入此 JSON blob 时,它会自动插入它而不使用双引号。...像这样。
{Security:[1,5],Reporting:[2,8]}
现在,我在使用此数据的视图中使用(并且需要使用)的任何类型的 JSON_QUERY sql 再次失败。
任何人都可以在这里提出一种方法来处理这个问题或澄清为什么会发生这种情况。在 C# 代码和 SQL 服务器之间表示 JSON 数据的方式似乎存在不一致,这使其不兼容。
谢谢!