JSON Parser

JSON Parser — це блок для структурування даних. Він перетворює "сирий" текст (рядок) у форматі JSON або XML у зрозумілий для платформи об'єкт. Це дозволяє розбити суцільний текст на окремі змінні, з якими можна легко працювати в наступних кроках флоу.
Навігація
- Налаштування блоку.
- Режими поля Text to parse: TXT vs EXP.
- Механіка роботи: Текст vs Об'єкт.
- Приклади використання.
- FAQ.
Налаштування блоку
─────────────────────────────────────────────────────────────-

Блок використовується для обробки відповідей від API або даних, які приходять у вигляді неструктурованого тексту.
Головна задача: Зробити дані "видимими" для системи. Поки JSON/XML є просто текстом, ви не можете звернутися до його окремих полів. Після парсингу кожне поле стає окремою змінною.
1 -> Text to parse: Поле для передачі тексту, який потрібно розпарсити (підтримує режим поля TXT/EXP). Можливі варіанти:
- JSON/XML текст, вставлений вручну;
- змінна, що містить JSON або XML;
- значення з попереднього блоку (Body, response, data тощо).
2 -> Format: Вибір стандарту, за яким потрібно розібрати текст:
- JSON: для стандартних JSON-структур;
- XML: використовується у складніших корпоративних або старіших API-сервісах.
Режими поля Text to parse: TXT vs EXP
─────────────────────────────────────────────────────────────-
Перемикач режиму поля Text to parse визначає, як система інтерпретує ваш ввід: як текст чи як програмний вираз з логікою, функціями і обчисленнями.
1. TXT (Text Mode) — Текстовий режим
Використовується для статичних значень та простих рядків.
- Особливість: Будь-яке значення (навіть формула або число) буде збережено як String (текст).
- Ризик: Якщо написати функцію TO_NUMBER(100) у режимі TXT, змінна отримає текстове значення "TO_NUMBER(100)". Якщо наступний блок очікує математичне число, розрахунок буде невірний.
2. EXP (Expression Mode) — Режим виразів
Перетворює поле на функціональний редактор, де працюють оператори та функції.
Цей режим використовується, коли значення для парсингу повинно формуватись динамічно або мати конкретний тип (число, boolean, масив тощо). Режим EXP дозволяє конвертувати типи та обробляти дані «на льоту».
Можливості EXP:
- Математика та Логіка: Обчислення значень та порівняння (
>,<,==,&&). - Трансформація даних: Зміна регістру, пошук/заміна тексту, форматування дат.
- Робота з типами: Конвертація у числа (
TO_NUMBER), булеві значення (TO_BOOL) або масиви. - Умови: Перевірка на порожнечу (
EMPTY()) або існування ключа через (ISSET()).

1 -> Режим поля TXT: значення або змінні будуть оброблені як текст.
2 -> Режим поля EXP: вміст поля буде оброблено як вираз із застосуванням функцій, операторів, модифікаторів.
3 -> Змінні: динамічні значення, які можна підставляти та передавати як аргументи функціям або як звичайні значення для полів.
4 -> Виклик зовнішньої функції: функція, що приймає аргументи та застосовується до переданих даних (наприклад, для обробки, перетворення або форматування).
5 -> Зовнішні функції та оператори: стають доступними коли режим поля EXP.
6 -> Модифікатор-функція: спеціальний елемент, який застосовується до змінних або результатів виразів і дозволяє обробляти дані «на льоту», змінюючи або доповнюючи їхню поведінку без попереднього збереження значення.
Якщо потрібно передати «чисте» число, результат обчислення або виконати перевірку — завжди використовуйте EXP. Для звичайних текстових повідомлень або статичних посилань достатньо TXT.
Механіка роботи: Текст vs Об'єкт
─────────────────────────────────────────────────────────────-
Коли ви отримуєте відповідь від сервера без автоматичного парсингу, вона виглядає для платформи як один довгий набір символів.
Приклад
Вхідний JSON:

Після проходження через JSON Parser, система перетворює цей текст на ієрархічну структуру:
id - поверне 123 (тип Number).
user - поверне об'єкт із даними користувача.
user.name - поверне Alex.
user.email - поверне [email protected].
items - перетвориться на масив (List), який можна ітерувати через Loop.
items.0
items.0.sku - поверне артикул першого товару (A1).
items.0.price - поверне ціну першого товару (10).
items.1
items.1.sku - поверне артикул другого товару (B2).
items.1.price - поверне ціну другого товару (20).

Результат парсингу:
- Всі поля стають доступними для вибору в дереві змінних.
- Вкладені об’єкти (об'єкт в об'єкті) та масиви (списки) зберігають свою структуру.
- Масиви стають доступними для перебору через Loop.
- Ви можете виконувати математичні операції з числами або форматувати дати, які раніше були просто частиною тексту.
Приклади використання
─────────────────────────────────────────────────────────────-
HTTP Request (Raw) + JSON Parser
Використовується, якщо в налаштуваннях HTTP-запиту не було увімкнено автоматичний парсинг (Parse Body = JSON). Блок JSON Parser бере "сире" тіло відповіді та перетворює його на змінні для подальшої обробки

JSON Parser + Loop
Якщо текст, який ви парсите, містить список (масив) елементів, після парсингу цей список стає доступним для ітерації через блок Loop. Ви зможете по черзі обробити кожен об'єкт із розпарсеного масиву.

JSON Parser + IF
Використовується для перевірки значень із розпарсених даних. Наприклад: перевірка статусу, наявності поля або конкретного значення.

JSON Parser + Evaluate
Дозволяє проводити обчислення над розпарсеними даними. Наприклад, витягнути price обох товарів та порахувати загальну суму замовлення через математичний вираз.

FAQ
─────────────────────────────────────────────────────────────-
1. Що буде, якщо текст має помилку (некоректний JSON)?
Якщо текст не відповідає формату (наприклад, пропущена дужка), блок видасть помилку. Рекомендується перевіряти цілісність даних перед парсингом.
2. Чи працює блок з XML так само, як з JSON?
Так. Незважаючи на назву, при виборі формату XML блок перетворить складну деревоподібну структуру XML у такий самий зручний об'єкт, де теги стануть назвами змінних.
3. Чи можу я розпарсити лише частину тексту?
Блок намагається розпарсити весь вхідний об'єкт. Якщо вам потрібна лише частина, ви спочатку парсите все, а потім у наступних блоках звертаєтеся до потрібного вам поля.
4. Чим JSON Parser відрізняється від Parse Body = JSON у HTTP Request?
Функціонально — нічим. JSON Parser виконує ту саму задачу, але як окремий блок і може використовуватись у будь-якому місці флоу.