Сложные переменные

Как работает парсер сложных переменных

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

pageЗапрос во вне

Пример

При получении строк из Google мы получили такой ответ:

{
    "message":"Строки найдены и возвращены",
    "rows_indexes":[1,2],
    "count_rows":2,
    "not_found":0,
    "row_values":[
        ["04.10.2021","А","р.1 092,36"],
        ["04.10.2021","Б","р.752,68"],
    ],
    "result_code":1
}

Если у вас ответ пришел сплошным текстом, можете воспользоваться сервисами для форматирования: https://beautifytools.com/json-beautifier.php

В строках лежат значения в таком виде:

Как получить конкретное значение по строке из ответа?

Сначала покажем на готовом примере:

{%i.message%} - выведет фразу "Строки найдены и возвращены"
{%i.row_values.0.0%} - выведет "04.10.2021"
{%i.row_values.0.1%} - выведет "А"
{%i.row_values.1.1%} - выведет "Б"

где i - переменная, в которую пришел ответ от интеграции.

Вот так это выглядит в блоке сообщения:

И вот в таком виде сообщение придет получателю:

Принцип работы

Переход внутрь JSON структуры осуществляется через символ точки. То есть, если в переменной i лежит структура:

{
    "message":"Строки найдены и возвращены",
    "result_code":1
}

то, чтобы получить message, нам нужно составить переменную {%i.message%}. Чтобы получить result_code - нужно написать {%i.result_code%}

Точка «.» является как бы указателем, что нужно копнуть «вглубь» или «перейти на уровень вложенности ниже»

В блоке сообщения это выглядит так:

Массивы

Получить элемент из массива можно по такому же принципу. Помните, что индекс массива начинается с 0. То есть, значение первого элемента получается через индекс 0.

Вот пример массива row_values:

{
    "row_values":[
        ["04.10.2021","А","р.1 092,36"],
        ["04.10.2021","Б","р.752,68"],
    ],
}

Как понять, что это массив - после названия стоит квадратная скобка [. Каждая открывающаяся скобка - новый массив, элементы в котором пронумерованы от 0.

Если мы просто напишем {%i.row_values%} - получим такой текст (он будет без пробелов, здесь показано отформатировано, чтобы лучше читалось):

[
    ["04.10.2021","А","р.1 092,36"],
    ["05.10.2021","Б","р.752,68"]
]

Теперь, чтобы получить элементы первой строчки, нужно добавить к нашей переменной символ 0.

Вот так получится при {%i.row_values.0%}

["04.10.2021","А","р.1 092,36"]

Уже почти добрались до элемента. По такой же логике добавляем порядковый номер (индекс) нужного нам элемента.

Например, мы хотим получить дату.

Пишем: {%i.row_values.0.0%}

Получаем:

04.10.2021

Отлично. Логика по остальным элементам схожая:

{%i.row_values.0%} выведет ["04.10.2021","А","р.1 092,36"]

{%i.row_values.0.0%} выведет 04.10.2021
{%i.row_values.0.1%} выведет А
{%i.row_values.0.2%} выведет р.1 092,36

Ремарка от разработчика

Если вы поняли логику работы сложных переменных, то я вас искренне поздравляю: вы можете по праву считаться продвинутым человеком в мире автоматизации и ботов :)

Функционал довольно сложный для понимания "с ходу", но предоставляет огромный простор действий. Советую просто попробовать и посмотреть, как это работает, чтобы на практике научиться всем тонкостям.

Удачи в ваших проектах!

Last updated