Чем отличается For JSON Auto от For JSON Path

Время чтения - 8 мин.Дата публикации 05.04.2026

Главное отличие заключается в управлении структурой (форматированием) получаемого JSON и вложенностью объектов.

Кратко:

  • FOR JSON AUTO — «Сделай всё сам». Простой режим. Структура JSON определяется структурой JOIN-ов в запросе. Дает меньше контроля.
  • FOR JSON PATH — «Я сам укажу путь». Гибкий режим. Структура JSON определяется алиасами (названиями колонок). Дает полный контроль над вложенностью и названиями полей.
 

1. FOR JSON AUTO (Простой, автоматический)

SQL Server анализирует запрос:

  1. Первая таблица в SELECT становится корневым массивом.
  2. Если вы делаете JOIN с другой таблицей, данные из второй таблицы автоматически вкладываются внутрь первой как вложенный объект/массив.
 
 
 

Результат: Обратите внимание, как Orders автоматически вложились внутрь Customers.

[
{
"CustomerName": "Иван",
"Orders": [ <-- Вложенный массив появился сам, потому что был JOIN
{ "OrderId": 1, "Amount": 100 },
{ "OrderId": 2, "Amount": 200 }
]
}
]

Минусы AUTO:

  • Нельзя управлять именами вложенных свойств (всегда будет имя таблицы или множественное число).
  • Нельзя создать сложную вложенность без JOIN-а.
  • Порядок полей может меняться.
 

2. FOR JSON PATH (Гибкий, управляемый)

В этом режиме SQL Server не анализирует связи между таблицами. Он просто смотрит на алиасы колонок. Точка (.) в названии колонки говорит SQL Server: «создай вложенный объект».

Пример (тот же результат, но вручную):

 
SELECT
c.CustomerName,
o.OrderId AS 'Orders.OrderId', <-- Явно указываем путь
o.Amount AS 'Orders.Amount'
FROM Customers c
JOIN Orders o ON c.Id = o.CustomerId
FOR JSON PATH;

Результат: Мы получили точно такую же структуру, но мы управляли ею сами через названия колонок.

Преимущества PATH:

  1. Создание вложенности без JOIN: Вы можете собрать сложный JSON из одной таблицы или переменных.

     
    SELECT
    'Иван' AS 'User.Name',
    'Москва' AS 'User.Address.City'
    FOR JSON PATH;

    С AUTO это сделать невозможно.

  2. Полный контроль над именами: Вы можете назвать свойство как угодно, независимо от названия таблицы.

  3. Режим корневого объекта: WITHOUT_ARRAY_WRAPPER работает в обоих режимах, но PATH чаще используется для генерации одиночных объектов для API.

 

Сводная таблица

Характеристика
FOR JSON AUTO
FOR JSON PATH
Управление структурой Автоматическое (по связям таблиц) Ручное (по алиасам колонок)
Вложенность Создается автоматически при JOIN Создается точкой в алиасе (Parent.Child)
Гибкость Низкая (простые запросы) Высокая (любые структуры)
Сложность написания Простая (ничего писать не надо) Средняя (нужно писать длинные алиасы)

Что выбрать?

  • Используйте AUTO, если вам нужно быстро выгрузить данные из простого запроса с JOIN-ами, и вас устраивает, как SQL Server сам сгруппировал данные.
  • Используйте PATH во всех остальных случаях (особенно для генерации JSON для вашей функции рендеринга шаблонов), так как это надежнее и предсказуемее. Это стандарт де-факто.
Насколько полезной была статья?

Что еще посмотреть по SQL Server

Как кешировать в SQL результаты сложных операций

Как искать зависимости объектов в SQL Server

SQL Server. Как вызвать процедуру с переменным именем и результаты вставить в таблицу

Формирование сложного JSON объекта через SELECT в SQL Server

Как вставить данные в таблицу БД из таблицы на другом сервере

Использование CPU в SQL Server Express Edition

Как форматировать код sql в sql server management studio

Антипаттерны SQL Server

Альтернатива множественному Replace

Разбор строки на части и занесение в табличную переменную

Из строки в таблицу. Функция split

Как оптимизировать массовые операции Update/delete

Дополнительный заработок для разработчиков на T-SQL

Прямая работа с заказчиками как ИП или самозанятый. Нужно знать только SQL и HTML.
Falcon Space - платформа для создания сайтов с личными кабинетами
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Запрос расчета стоимости веб-проекта на базе Falcon Space
Если видео Youtube плохо грузится, то попробуйте найти видео в ВК видео на канале Falcon Space
Сайт использует Cookie, Яндекс Метрику. Используя сайт, вы соглашаетесь с правилами сайта. См. Правила конфиденциальности и Правила использования сайта OK