Задача и предварительные условия

Возьмите массив data.items из JSON и создайте плоский CSV с согласованным порядком столбцов.

В примере используются демонстрационные данные и настройки. Проверьте ожидаемый результат в своей среде до подключения рабочих получателей. Идентификаторы demo_* условны: выберите собственные учебные подключения или источники в редакторе. JSON ниже показывает структуру блоков и связей, а не готовый архив потока для переноса.

Учебные входные данные

{
  "data": {
    "items": [
      {
        "sku": "T01",
        "name": "Tea",
        "stock": 12
      },
      {
        "sku": "C01",
        "name": "Coffee",
        "stock": 5
      }
    ]
  },
  "generated": "demo"
}

Блоки, связи и точные настройки

Поясняющая схемаУвеличить ↗03. JSON: извлечение массива вложенных записей. Схема примера 03: 3 блока, 2 связи. Идентификаторы узлов и порты настроенной схемы сохранены.
Схема потока 03

Схема примера 03: блоков — 3, связей — 2. Идентификаторы узлов и порты настроенной схемы сохранены.

Добавьте перечисленные блоки в конструкторе, откройте свойства каждого и задайте эти значения. Имена demo_* обозначают учебные источники и подключения.

БлокНастройка
1
Файл
src
  • Роль: source
  • Источник: demo_inventory_json
  • Настройки чтения:
    • Путь записей JSON: /data/items
    • Диапазон: A1:C3
    • Первая строка — заголовок: так
2
Сопоставление столбцов
map
  • Режим: columns
  • Столбцы:
      • Имя: SKU
      • Значение: sku
      • Имя: Name
      • Значение: name
      • Имя: Stock
      • Значение: stock
3
Экспорт данных
out
  • Формат: csv
  • Имя файла: inventory
  • Назначение: download
  • Разделитель: ;
  • Часовой пояс: Europe/Kyiv

Связи портов

  • src out → map in
  • map out → out in
Полная конфигурация схемы в JSON
{
  "version": 3,
  "nodes": [
    {
      "id": "src",
      "type": "file",
      "label": "src",
      "config": {
        "role": "source",
        "source_id": "demo_inventory_json",
        "options": {
          "json_path": "/data/items",
          "range": "A1:C3",
          "header": true
        }
      }
    },
    {
      "id": "map",
      "type": "mapping",
      "label": "map",
      "config": {
        "mode": "columns",
        "columns": [
          {
            "name": "SKU",
            "value": "sku"
          },
          {
            "name": "Name",
            "value": "name"
          },
          {
            "name": "Stock",
            "value": "stock"
          }
        ]
      }
    },
    {
      "id": "out",
      "type": "export",
      "label": "out",
      "config": {
        "format": "csv",
        "filename": "inventory",
        "destination": "download",
        "delimiter": ";",
        "timezone": "Europe/Kyiv"
      }
    }
  ],
  "edges": [
    {
      "source": "src",
      "target": "map",
      "source_port": "out",
      "target_port": "in"
    },
    {
      "source": "map",
      "target": "out",
      "source_port": "out",
      "target_port": "in"
    }
  ]
}

Ожидаемый результат

SKUИмяStock
T01Tea12
C01Coffee5

Запуск и проверка

  1. Сохраните показанный JSON как inventory.json и добавьте как файловый источник.
  2. Задайте json_path=/data/items и используйте точные исходные имена sku, name и stock в сопоставлении.
  3. Запустите и проверьте inventory.csv: две строки без сформированного поля метаданных.

Частые ошибки

  • Файловый источник использует JSON Pointer /data/items. Это отличается от пути data.items в подключении REST API.
  • Путь должен вести к записям: ошибка в items даёт отсутствие пути или неверную структуру.
  • Для сопоставления нужны точные имена полей; SKU — выходное имя, sku — входное.