Документация Толоки

Чтение и запись

Обратите внимание

Документация на русском языке может быть устаревшей. Самые последние изменения доступны в документации на английском языке.

В этом разделе показаны примеры чтения из входных данных (data.input) и записи в выходные данные (data.output).

Чтение и запись в промежуточные данные (data.internal) осуществляется таким же образом.

О том, как ввести внутри объекта во входных данных кавычки вида ", обратную косую черту \, перенос строки или табуляцию, читайте в разделе Если вы не знакомы с JSON. Об  экранировании в TSV-файле читайте в Руководстве заказчика.

Простой пример

Допустим, вы хотите вывести текст с вопросом из входных данных и записать ответ в выходные данные. Пример входных данных:

{
  "question": "А вы купили бы слона?"
}

Пример отображения вопроса в компоненте view.text:

{
  "type": "view.text",
  "label": "Ответьте на вопрос:",
  "content": {
    "type": "data.input",
    "path": "question"
  }
}

Пример записи ответа с помощью компонента field.radio-group:

{
  "type": "field.radio-group",
  "options": [...],
  "data": {
    "type": "data.output",
    "path": "verdict"
  }
}

Когда вы ответите положительно и нажмете Отправить, результат будет таким:

{
  "output": {
    "verdict": true
  }
}

Чтение входных данных с типом JSON

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

Допустим, во входных данных у вас есть объект, описывающий адрес регистрации.

{
    "name": "Ivan Ivanov",
    "registration_аddress": {
        "country": "Russia",
        "city": "Moscow",
        "address": "Tverskaya str, 3-53"
    },
    ...

Чтобы отобразить в интерфейсе значение из свойства city, укажите путь к нему через точку:

{
  "type": "data.input",
  "path": "registration_аddress.city"
}

Запись данных с типом JSON

Аналогично осуществляется запись в выходные данные. Если вы укажете путь через точку, то в спецификации поле с выходными данными будет иметь тип объект.

Чтение данных с типом "массив"

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

Например, во входных данных указан массив ссылок на изображения:

{
  "images": [
    "https://cdn.stocksnap.io/img-thumbs/960w/surfer-wave_3DBOYBPB3X.jpg",
    "https://cdn.stocksnap.io/img-thumbs/960w/fisherman-silhouette_UADULRRHEK.jpg",
    "https://cdn.stocksnap.io/img-thumbs/960w/old-photo_GEQ27OWZVV.jpg"
  ]
}

Сослаться на конкретный элемент массива можно так:

"url": {
  "type": "data.input",
  "path": "images.<Номер элемента, начиная с нуля>"
}

Если длина массива неизвестна или он очень большой, вы можете получить все значения массива с помощью компонента helper.transform.

Например, вы можете преобразовать массив ссылок на изображения в массив компонентов view.image, чтобы отобразить их в интерфейсе.

Запись данных с типом "массив"

По аналогии с чтением элементов из массива, вы также можете записывать результаты в виде массива. Для этого укажите в свойстве path путь к массиву и номер элемента, начиная с нуля. Например:

{
  "type": "data.output",
  "path": "images.0"
}

Узнайте больше