Построение результирующих структур
После извлечения и преобразования данных можно задать их форму в результате.
Конструкторы массивов
Когда путь находит несколько значений, 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 как шаблон результата и заменить его части выражениями, подставляющими данные из входного документа.