Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Относится к: SQL Server 2016 (13.x) и более поздних версиях
; Azure SQL Database
,Azure SQL Managed Instance
,Azure Synapse Analytics (только для serverless SQL pool),
SQL аналитический конечный пункт в Microsoft Fabric
; Склад в Microsoft Fabric
,SQL база данных в Microsoft Fabric
Вы можете отформатировать результаты запроса в формате JSON или экспортировать данные из SQL Server в формате JSON, добавив предложение FOR JSON к инструкции SELECT. Используйте инструкцию FOR JSON для упрощения клиентских приложений путем передачи форматирования выходных данных JSON на SQL Server.
Note
Azure Data Studio — это рекомендуемый редактор запросов JSON, так как он автоматически форматирует результаты JSON, как показано в этой статье. SQL Server Management Studio отображает неформатированную строку.
В хранилище данных Fabric FOR JSON должен быть последним оператором в запросе, поэтому не допускается внутри вложенных запросов.
Форматирование результатов запроса
При использовании 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.
Сведения о синтаксисе и использовании см. в предложении SELECT — FOR (Transact-SQL).
Управление другими параметрами выходных данных JSON
Управляйте выходными данными элемента FOR JSON с использованием следующих дополнительных параметров.
ROOTЧтобы добавить один элемент верхнего уровня в выходные данные JSON, укажите параметр
ROOT. Если не указать этот параметр, выходные данные JSON не будут поддерживать корневой элемент. Дополнительные сведения см. в разделе "Добавление корневого узла в выходные данные JSON" с параметром ROOT.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 экранирует специальные символы и управляющие символы.
Example
Приведенный ниже пример показывает, каким образом предложение 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
- Как FOR JSON экранирует специальные символы и управляющие символы
- Видео: JSON в качестве моста между NoSQL и реляционными мирами
- SELECT — предложение FOR (Transact-SQL)
- Использование выходных данных FOR JSON в ядре СУБД SQL и клиентских приложениях