Показать / скрыть оглавление

    Получение и обработка данных в формате JSON от веб-сервиса REST

    Задача

    Получить с портала "Открытые данные России" по API документ "График работы и адреса обслуживания Читального зала Центрального государственного архива города Москвы", записать его в файл на диск, а также разобрать полученные данные по структуре для дальнейшего использования (например, для вставки и обновления строк Колибри).

    Исходные данные

    Перед тем как приступить к решению задачи, обратимся к паспорту API "График работы и адреса обслуживания Читального зала Центрального государственного архива города Москвы" для определения адреса сервера, веб-службы и возможностей параметризации запроса.

    Сценарий решения задачи

    Решение задачи будет заключаться в создании процесса, который будет включать следующие шаги:

    1. Отправка запроса в веб-службу.
    2. Преобразование полученных данных в файл (поток байт).
    3. Запись файла на диск.
    4. Разбор и обработка полученных от веб-службы данных типа JSON.
      4.1. Извлечение данных из первого уровня JSON-объекта
      4.2. Извлечение данных из второго уровня JSON-объекта.

    Используемые узлы

    Веб-служба REST/JSON
    Преобразовать в байты
    Запись в файл
    Таблица JSON
    Проекция
    Развернуть ячейки в строки

    Построение и настройка процесса

    1. Создадим и сохраним новый процесс.
    2. Для получения данных из веб-сервиса в формате JSON добавим в процесс узел Веб-служба REST/JSON.
    3. У узла Веб-служба REST/JSON установим название "График работы" и настроим свойства.

      Свойство Значение
      Адрес сервера https://data.gov.ru
      Адрес веб-службы opendata/7728073222-2/data-20181120T0100.json
      HTTP метод GET
      HTTP заголовки Не требуются по паспорту API

    4. Выполним проверку процесса, при наличии ошибок исправим их.

    5. Запустим процесс в отладке для просмотра результатов узла "График работы".
    6. Для сохранения полученного ответа в файл на диск, сначала необходимо преобразовать полученные данные формата JSON в поток байт.
      Для этого добавим узел Преобразовать в байты и соединим его входной порт с выходным портом узла "График работы".
    7. Настроим свойства узла Преобразовать в байты.
    8. Для сохранения полученного файла на диск добавим узел Запись в файл и соединим его входной порт с выходным портом узла "Преобразовать в байты".
    9. У узла Запись в файл установим название "Запись полученного ответа в файл" и настроим свойства.
    10. Выполним проверку процесса, при наличии ошибок исправим их.
    11. Запустим процесс в отладке. Полученный по API документ будет сохранен в файл на диск.
    12. Для дальнейшей обработки полученных данных (JSON-документа) добавим в процесс узел Таблица JSON и соединим его входной порт с выходным портом узла "График работы".
    13. У узла Таблица JSON установим название узла "График работы и адреса обслуживания" и настроим свойства в соответствии с пришедшими данными.
      Данные о графике и адресах пришли в корневом JSON-объекте, который является массивом, поэтому свойство "Путь к объекту" оставим не заполненным, свойство "Режим документа" не устанавливаем.
      Свойства JSON-объекта Address и RoomNumber получим, добавив соответствующие колонки.
      Свойство JSON-объекта WorkingHours (рабочие часы) представляет собой вложенный JSON-объект, который также является массивом. Для извлечения данных о рабочих часах потребуется сначала получить свойство WorkingHours в виде JSON-объекта, а далее обработать его с помощью дополнительных узлов.
    14. Выполним проверку процесса, при наличии ошибок исправим их.
    15. Запустим процесс в отладке для просмотра результатов узла "График работы и адреса обслуживания".
      Обрабатываемый JSON-объект содержал 3 элемента, которые преобразованы в строки выходной таблицы.
    16. Для получения данных из свойства WorkingHours сначала преобразуем данные из JSON-объекта в массив.
      Для этого добавим в процесс узел Проекция и соединим его входной порт с выходным портом узла "График работы и адреса обслуживания".
    17. У узла Проекция установим название "Проекция Графика работы", настроим свойства и добавим вычисляемую колонку "Рабочие часы".
    18. Полученный в узле "Проекция Графика работы" массив "Рабочие часы" развернем в строки по элементам массива.
      Для этого добавим в процесс узел Развернуть ячейки в строки, соединим его входной порт с выходным портом узла "Проекция Графика работы".
    19. Настроим свойства узла Развернуть ячейки в строки.
    20. Выполним проверку процесса, при наличии ошибок исправим их.
    21. Запустим процесс в отладке для просмотра результатов узла "Развернуть ячейки в строки".
      Для каждого элемента массива "Рабочие часы" были созданы копии строк. Колонка "Рабочие часы" содержит JSON-объект.
    22. Для получения свойств JSON-объект "Рабочие часы" добавим в процесс узел Проекция, соединим его входной порт с выходным портом узла "Развернуть ячейки в строки".
    23. У узла Проекция установим название "Проекция Рабочие часы", настроим свойства и добавим две вычисляемые колонки "Дни недели" и "Часы".
    24. Выполним проверку процесса, при наличии ошибок исправим их.
    25. Запустим процесс в отладке для просмотра результатов узла "Проекция Рабочие часы".
    26. Далее полученная из узла "Проекция Рабочие часы" таблица с данными может быть обработана с помощью других узлов, а данные записаны в хранилище.
    Замечание

    Файл процесса "Данные веб-службы JSON"

    В начало страницы Справочная система Колибри. Группа компаний Октоника, 2022