Каков «правильный» способ форматирования JSON из SQL Server? - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть сохраненный процесс, который возвращает JSON.Процесс работает нормально, и когда я вызываю его в SSMS, он возвращает объект json, который я могу щелкнуть и увидеть как действительный json.Когда я вызываю его через Visual Studio, он делает то же самое, нажимая на него и нажимая return, форматирует его, чтобы он был удобочитаемым (и не все в одной строке).Если я возьму строку и передам ее обратно в функцию sql IsJson, она также вернет true, поэтому я на 100% уверен, что выход json из proc действителен.

Однако мой разработчик веб-интерфейсаневозможно проанализировать его, и, похоже, что-то сводится к чему-то, пытающемуся конвертировать его куда-либо.

json (как вывод от proc):

{"APIResult": [{"ID ": 200," Status_Message ":" Success "," Developer_Message ":" Успешный вход в систему для D56D10AC-3A74-42FC-8BB5-F783A6C0C556 33E4F907-F1E5-4F1B-8CA5-5521291E683A (AppID: null ").User_Message ":" Успешный вход в систему "," Пользователь ": [{" ID ":" D56D10AC-3A74-42FC-8BB5-F783A6C0C556 "}]}]}

Использование Почтальона для доступа к живому API (или localhost) Я получаю данные, которые ожидаю (как указано выше), однако, все это заключает в двойные кавычки и экранирует все двойные кавычки вокруг каждого элемента, поэтому я получаю:

"{\" APIResult \ ":[{\ "ID \": 200, \ "Status_Message \": \ "Success \", \ "Developer_Message \": \ "Успешный вход в систему для D56D10AC-3A74-42FC-8BB5-F783A6C0C556 33E4F907-F1E5-4F1B-8CA5-5521291E683A (AppID: (null)). \ ", \" User_Message \ ": \" Успешный вход в систему \ ", \" Пользователь \ ": [{\" ID \ ": \"D56D10AC-3A74-42FC-8BB5-F783A6C0C556 \ "}]}]}"

Когда я пытаюсь проанализировать это в sql (используя isjson), он возвращает false.Тем не менее, синтаксический анализ этого же кода, хотя jsonlint.com интерпретирует его как действительный.Пробуя его через анализатор, который мой разработчик использует http://json.parser.online.fr, он также выдает его как ошибку.

В одно мгновение я могу сказать своему разработчику убрать первый и последний символы и заменить каждый \ "на \""но это кажется немного странным.

Существуют ли разные интерпретации json?Я читал, что это часто вызывается вызывающим приложением, ожидающим строку, которая ему нужна для json-ify, и потому что он получает объект json, это json-ifying json, но даже если я заставляю сервер sql выводить строку какСтрока, а не JSON, кажется, все то же самое.SQL определенно продвигает его корректно, но все, что мой разработчик вызывает через API, возвращает тот же формат, что и почтальон, и ему это не нравится.Как я могу убедиться, что то, что получает вызывающий код, - это то, что дает SQL, а не какая-то странная интерпретация?

1 Ответ

0 голосов
/ 13 февраля 2019

@ Tim Попробуйте десериализовать вывод хранимой процедуры.Используйте JSonConvert.Derialize в C #

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...