У меня есть столбец BLSON JSON (например, Группы) в пользовательской таблице, которая содержит объект json следующим образом:
{Security:[1,5],Reporting:[2,8]}
Если я попытаюсь запросить эту таблицу с помощью JSON_QUERY, я получу плохо отформатированную ошибку. Так, например,
SELECT JSON_QUERY([Groups],'$.Security') from User
Возвращает
Текст JSON неправильно отформатирован. Неожиданный символ 'S' находится в позиции 1.
Причина в том, что BLOB-объекты JSON в SQL-сервере, похоже, настаивают на двойных кавычках в атрибутах объекта. Так что если вышеприведенный JSON выглядит следующим образом (обратите внимание на двойные кавычки), то все в порядке.
{"Security":[1,5],"Reporting":[2,8]}
Проблема в том, что я использую ServiceStack в приложении C #, которое автоматически создает этот BLOB-объект JSON на основе предварительно определенного пользовательского документа и вставляет его непосредственно в БД через API. Когда он вставляет этот BLOB-объект JSON, как предопределено в POCO, он автоматически вставляет его без двойных кавычек. ... вот так.
{Security:[1,5],Reporting:[2,8]}
Теперь еще раз любой вид JSON_QUERY sql, который я использую (и должен использовать) в представлениях, которые используют эти данные, не работает.
Может ли кто-нибудь предложить здесь подход, чтобы разобраться с этим или каким-то разъяснением того, почему это будет происходить. Кажется, существует несоответствие в том, как данные JSON представлены между кодом C # и сервером SQL, что делает их несовместимыми.
Спасибо!