Файлы и маппинги
Полный справочник по datasets и mapping JSON в Database: форматы, ключи, выражения, директивы и примеры.
Overview
Эта страница — справочник по трём типам файлов Database.
| Файл | Расширение | Назначение |
|---|---|---|
| Dataset | .json / .csv | Строки контента, потребляемые маппингами |
| Asset | изображение | Переиспользуемое изображение для слоёв с картинками |
| Mapping | .map.json | Правила связи ключей датасета со слоями Figma (fields[]) |
Форматы dataset
Database поддерживает два формата dataset:
- JSON
- CSV
Dataset может быть локальным или синхронизированным из Git.
JSON
Поддерживаемые формы:
- массив объектов (рекомендуется),
- одиночный объект (в apply/generate обрабатывается как датасет из одной строки).
Пример:
[
{
"title": "Nike Air Max",
"price": 129.9,
"badge": true,
"user": { "name": "Anna" }
}
]
Правила резолва JSON-значений
Когда маппинг вычисляет [path]:
- сначала проверяется прямой ключ (важно для плоских ключей типа
sport.name-ru), - затем используется dot-path (
user.name), - если в промежуточной точке массив и индекс не задан, берётся первый элемент.
Если в текст нужно подставить объект, плагин использует приоритет:
ru → en → default → value → text → title → name → fallback в JSON-строку.
CSV
CSV парсится как заголовок + строки данных.
Правила парсера SXL Studio:
- строка 1 — заголовки;
- минимум для непустого результата: 2 строки (заголовок + хотя бы одна строка данных), иначе результат пустой;
- поддерживаются экранированные кавычки (
""); - поддерживаются запятые/переносы внутри quoted-значений;
- дубли заголовков переименовываются в
name,name_2,name_3, ...
Преобразование типов:
- числовые строки конвертируются в числа;
- строки с ведущими нулями (например,
001) остаются строками; - пустые строки остаются пустыми строками;
- CSV-значения не приводятся автоматически к boolean самим CSV-парсером.
Режимы редактора CSV
Для CSV в UI доступны:
- режим Code: редактирование сырого CSV,
- режим Table: табличный редактор.
В режиме Table доступны:
- переименование колонок,
- добавление/удаление/дублирование строк,
- добавление колонок,
- drag-and-drop перестановка колонок,
- сортировка по одной колонке,
- search-фильтр,
- copy/copy all,
- вставка CSV из буфера (новые колонки добавляются автоматически),
- при сохранении удаляются пустые строки/колонки.
Assets
Поддерживаемые форматы загрузки:
- PNG, JPG/JPEG, GIF, WebP, SVG.
При загрузке WebP/SVG конвертируются в PNG для локального хранения asset.
Значение для картинки в маппинге может быть:
https://...URL,data:image/...URL,local-asset://<assetId>,- имя/путь локального asset,
- путь к файлу в Git.
HTTP-URL отклоняется логикой загрузки изображений. Используйте только HTTPS.
Схема mapping JSON (.map.json)
Mapping-файл хранится в JSON с $type: "maps".
Ключи верхнего уровня
| Ключ | Тип | Обязательный | Описание |
|---|---|---|---|
$type | "maps" | да | Маркер mapping-файла |
id | string | да | ID маппинга |
name | string | да | Имя файла (обычно оканчивается на .map.json) |
createdAt | string | да | ISO-дата |
updatedAt | string | да | ISO-дата |
fields | FieldConfig[] | да | Поля маппинга |
folder | string | null | нет | Путь папки в дереве |
datasetId | string | нет | Dataset по умолчанию для полей |
targetComponentKey | string | нет | Ключ компонента для валидации Generate |
targetComponentName | string | нет | Отображаемое имя привязанного компонента |
autoHideUnused | boolean | нет | Включает post-apply auto-hide |
order | "asc" | "desc" | "random" | legacy | Legacy-ключ для совместимости |
Ключи FieldConfig
| Ключ | Тип | Обязательный | Описание |
|---|---|---|---|
id | string | да | ID поля |
jsonPath | string | да | Key Expression |
layerName | string | да | Имя/текст Target Layer |
fillStrategy | "asc" | "desc" | "random" | да | Стратегия строк для поля |
datasetId | string | нет | Переопределение dataset на уровне поля |
group | string | нет | Логическое имя группы |
groupFillMode | "same" | "global" | "random" | нет | Распределение строк между инстансами/группами |
Справочник Key Expression
Базовый синтаксис
- Ключ в скобках:
[title] - Dot-path:
[user.name] - Несколько ключей:
[first] [last] - Ключ без скобок тоже поддерживается и трактуется как
[key]
Конкатенация с +
[a] + [b] обрабатывается как прямая склейка плейсхолдеров.
Модификатор удаления
Используется - (пробел-дефис-пробел):
[status] - prefix_→ удаляетprefix_[code] - *-→ удаляет всё до последнего-
Встроенные плейсхолдеры в значениях dataset
После основного вычисления выражения плагин дополнительно раскрывает встроенные [path] внутри итоговой строки, если path существует в этой же строке данных.
Пример:
- значение в dataset:
"Total [fts] (NP)" fts = 7.5- результат:
"Total 7.5 (NP)"
Совпадение Target Layer
Узел считается target, если с layerName из mapping совпало:
nameузла,- или
charactersу TEXT-узла.
Нормализация при сравнении:
- trim по краям,
- замена NBSP на обычный пробел.
Сравнение остаётся регистрозависимым.
Приоритет выбора dataset
Для каждого поля dataset выбирается в таком порядке:
field.datasetIdmapping.datasetId- автоопределение по ключам выражения на первой строке dataset
- сначала ищется полное совпадение,
- затем частичное.
Fill-поведение
fillStrategy (уровень поля)
asc: прямой порядок,desc: обратный порядок,random: случайная строка.
groupFillMode (уровень группы)
same: локальный счётчик на контейнер,global: общий счётчик на все контейнеры,random: случайная строка на применение группы.
Справочник директив
Директивы — это строковые значения в ячейках dataset.
@prop: (свойства компонента)
Синтаксис:
@prop:Property=value
@prop:Visible=true;Label=New
Особенности:
- несколько свойств через
;, \;поддерживается как экранированная;,- применяется только в INSTANCE-контексте,
- доступно при включённом PROP control feature.
@node: / @hide / @show
Поддерживаемые node-директивы:
@hide→visible=false@show→visible=true@node:visible=true|false@node:opacity=0..1@node:locked=true|false
Особенности:
- node-директивы можно объединять через
;, - для TEXT-таргетов visibility-директивы обычно применяются к родительскому контейнеру,
- доступно при включённом Node control feature.
@rows: и $visibleRows / $rows
@rows:3оставляет видимыми первые 3 дочерних узла и скрывает остальные.- Также поддерживаются числовые значения из выражений с
$visibleRowsили$rows.
Примечание: для native SLOT-узлов этот механизм не применяется.
Обычные boolean-значения для INSTANCE
Если значение boolean-подобное (true/false/1/0/yes/no/on/off) и target — INSTANCE, плагин устанавливает первое BOOLEAN component property в этом инстансе.
Пример mapping-файла
{
"$type": "maps",
"id": "map_cards",
"name": "cards.map.json",
"createdAt": "2026-05-27T10:00:00.000Z",
"updatedAt": "2026-05-27T10:05:00.000Z",
"datasetId": "ds_products",
"targetComponentKey": "2b8b2...",
"targetComponentName": "WProductCard",
"autoHideUnused": true,
"fields": [
{
"id": "f_title",
"jsonPath": "[title]",
"layerName": "product-title",
"fillStrategy": "asc",
"group": "card/content",
"groupFillMode": "same"
},
{
"id": "f_badge",
"jsonPath": "@prop:Visible=[badge]",
"layerName": "badge",
"fillStrategy": "asc"
}
]
}
Связанные страницы
- Операции и runtime-поведение: Apply и Generate
- Общий workflow Database: Обзор Database