Перейти к основному содержимому
Версия: 2.0 (WIP)

Построение результирующих структур

После извлечения и преобразования данных можно задать их форму в результате.

Конструкторы массивов

Когда путь находит несколько значений, JSONata возвращает их массивом. Чтобы добавить собственную структуру, в месте, где ожидается имя поля, поместите выражение в []; несколько выражений разделяются запятыми. Конструкторы также позволяют сделать несколько точечных выборок без широкого применения wildcard.

Email.address
Email.[address]
[Address, Other.`Alternative.Address`].City

Первое вернёт все четыре адреса плоским массивом; второе — массив, где для каждого объекта Email есть отдельный массив адресов; третье выберет города Address и Alternative.Address.

Конструкторы объектов

Объект создаётся парой {} с парами ключ/значение через запятую: {key1: value1, key2: value2}. И ключи, и значения могут быть литералами или выражениями; ключ обязан быть строкой либо вычисляться в строку.

После выражения, выбравшего несколько значений, объектный конструктор образует один объект с парой для каждого контекстного значения. Если нужен массив объектов (по одному на значение), ставьте конструктор сразу после точки.

Phone.{type: number}
Phone{type: number}
Phone{type: number[]}

Первое создаёт массив объектов. Второе объединяет пары в один объект, собирая повторяющиеся ключи в последовательность; третье принудительно делает массивом и единственный номер.

Литералы JSON

Конструкторы массивов и объектов используют обычный синтаксис JSON. В выражении также доступны строка ("hello world"), число (34.5), логическое значение (true, false), null, объект ({"key1": "value1"}) и массив (["value1", "value2"]).

JSONata — надмножество JSON. Любой допустимый JSON-документ одновременно является выражением JSONata. Это позволяет взять JSON как шаблон результата и заменить его части выражениями, подставляющими данные из входного документа.