Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
Управляемый экземпляр Azure SQL
Azure Synapse Analytics (только бессерверный пул SQL)
Конечная точка анализа SQL в Microsoft Fabric
Хранилище в Microsoft Fabric
Вы можете отформатировать результаты запроса в формате JSON или экспортировать данные из SQL Server в формате JSON, добавив предложение FOR JSON
к инструкции SELECT
. Используйте инструкцию FOR JSON
для упрощения клиентских приложений путем передачи форматирования выходных данных JSON на SQL Server.
Примечание.
Azure Data Studio — это рекомендуемый редактор запросов JSON, так как он автоматически форматирует результаты JSON, как показано в этой статье. SQL Server Management Studio отображает неформатированную строку.
Форматирование результатов запроса
При использовании FOR JSON
предложения можно явно указать структуру выходных данных JSON или разрешить структуру инструкции SELECT
определить выходные данные.
Чтобы сохранить полный контроль над форматом выходных данных JSON, используйте
FOR JSON PATH
. Вы можете создавать объекты-оболочки и вкладывать сложные свойства друг в друга.Чтобы отформатировать выходные данные JSON автоматически на основе структуры инструкции
SELECT
, используйтеFOR JSON AUTO
.
Ниже приведен пример инструкции SELECT
с FOR JSON
предложением и его выходными данными.
Управление выходными данными с помощью FOR JSON PATH
В PATH
режиме можно использовать точечный синтаксис, например, Item.Price
, чтобы форматировать вложенные выходные данные.
Вот пример запроса, использующего режим PATH
с условием FOR JSON
. В следующем примере также используется ROOT
параметр для указания именованного корневого элемента.
Дополнительные сведения о FOR JSON PATH
Дополнительные сведения и примеры см. в разделе "Формат вложенных выходных данных JSON" с режимом PATH (SQL Server).
Сведения о синтаксисе и использовании см. в предложении SELECT — FOR (Transact-SQL).
Управление другими параметрами выходных данных JSON
Управляйте выходными данными элемента FOR JSON
с использованием следующих дополнительных параметров.
ROOT
Чтобы добавить один элемент верхнего уровня в выходные данные JSON, укажите параметр
ROOT
. Если не указать этот параметр, выходные данные JSON не будут поддерживать корневой элемент. Дополнительные сведения см. в разделе "Добавление корневого узла в выходные данные JSON" с параметром ROOT (SQL Server).INCLUDE_NULL_VALUES
Чтобы включить значения NULL в выходные данные JSON, укажите
INCLUDE_NULL_VALUES
параметр. Если этот параметр не указан, выходные данные не включают свойства JSON дляNULL
значений в результатах запроса. Дополнительные сведения см. в разделе "Включение значений NULL" в JSON — параметр INCLUDE_NULL_VALUES.WITHOUT_ARRAY_WRAPPER
Чтобы удалить квадратные скобки, которые по умолчанию окружают JSON-вывод
FOR JSON
предложения, укажите параметрWITHOUT_ARRAY_WRAPPER
. Используйте этот параметр, чтобы создать единый объект JSON в качестве выходных данных из одной строки результата. Если этот параметр не указан, выходные данные JSON форматируются в виде массива, то есть выходные данные заключены в квадратные скобки. Дополнительные сведения см. в разделе "Удалить квадратные скобки" из JSON — параметр WITHOUT_ARRAY_WRAPPER.
Выходные данные предложения FOR JSON
Выходные данные предложения FOR JSON
имеют следующие характеристики:
Результирующий набор содержит один столбец.
- Небольшой результирующий набор может содержать одну строку.
- Большой результирующий набор разбивает длинную строку JSON по нескольким строкам.
По умолчанию SQL Server Management Studio (SSMS) объединяет результаты в один ряд, если опция вывода установлена на Результаты в виде сетки. В строке состояния SSMS отображается действительное число строк.
Другим клиентским приложениям может потребоваться код для повторного объединения длинных результатов в одну допустимую строку JSON путем объединения содержимого нескольких строк. Пример этого кода в приложении C# см. в разделе Использование выходных данных FOR JSON в клиентском приложении C#.
Результаты форматируются в виде массива объектов JSON.
Число элементов в массиве JSON равно числу строк в результатах инструкции SELECT (до применения предложения FOR JSON).
Каждая строка в результатах инструкции SELECT (до применения предложения FOR JSON) становится отдельным объектом JSON в массиве.
Каждый столбец в результатах инструкции SELECT (до применения предложения FOR JSON) становится свойством объекта JSON.
Как имена столбцов, так и их значения экранируются согласно синтаксису JSON. Дополнительные сведения см. в статье о том, как FOR JSON экранирует специальные символы и управляющие символы (SQL Server).
Пример
Приведенный ниже пример показывает, каким образом предложение FOR JSON
форматирует выходные данные JSON.
Результаты запроса
A | B | C | D |
---|---|---|---|
10 | 11 | 12 | X |
20 | 21 | 22 | Y |
30 | 31 | 32 | Z |
Выходные данные JSON
[{
"A": 10,
"B": 11,
"C": 12,
"D": "X"
}, {
"A": 20,
"B": 21,
"C": 22,
"D": "Y"
}, {
"A": 30,
"B": 31,
"C": 32,
"D": "Z"
}]
Связанный контент
- Как FOR JSON преобразует типы данных SQL Server в типы данных JSON (SQL Server)
- Как FOR JSON экранирует специальные символы и управляющие символы (SQL Server)
- Видео: JSON в качестве моста между NoSQL и реляционными мирами
- SELECT — предложение FOR (Transact-SQL)
- Использование выходных данных FOR JSON в SQL Server и клиентских приложениях (SQL Server)