Чтение данных JSON в набор данных
При чтении данных из файла JSON можно указать, нужно ли добавлять и/или заменять данные в наборе данных. Для чтения данных JSON в набор данных следующие имена и типы в файле JSON должны совпадать с именами и типами в определении набора данных (схема):
- Имя набора данных.
- Имена временных таблиц.
- Имена полей.
- Типы полей.
Типы полей ABL соответствуют одному из четырёх типов JSON: String, Number, Boolean или Null. Подробные сведения о сопоставлении см. в справочном руководстве по работе с JSON.
Дескриптор набора данных используется для чтения данных из файла JSON с помощью метода READ-JSON (). Метод READ-JSON() выполняет следующие действия:
- Открывает файл JSON.
- Считывает элемент JSON (эквивалентный записи) из файла, соответствующего записи временной таблицы.
- Создаёт или находит запись временной таблицы.
- Присваивает полям записи временной таблицы значения, считанные из элемента JSON.
- Повторяет шаги 2-4 до тех пор, пока все элементы в файле JSON не будут прочитаны.
- Закрыть файл.
Поведение чтения определяется заданным режимом чтения. Метод READ-JSON() для чтения данных в набор данных вызывается следующим образом:
<dataset-handle> :READ-JSON( <source-type>, <file-name>, <read-mode>).
Здесь,
- dataset-handle – дескриптор набора данных, который будет заполняться содержимым из файла JSON.
- source-type – указывает тип источника. В качестве исходного типа следует указать “FILE”.
- file-name – полный или относительный путь к файлу JSON.
- read-mode – инструктирует AVM что делать с dataset. Возможные значения: EMPTY, REPLACE, MERGE или APPEND. Укажите значение EMPTY, чтобы очистить набор данных до того, как данные будут считаны в набор данных. Укажите REPLACE, чтобы добавить новые и/или заменить существующие записи.
Если в файле JSON указаны поля, которые не существуют в определении временной таблицы, они игнорируются. Если поля не указаны в файле JSON, то их значения устанавливаются в значение неизвестно или в начальное значение, как определено в описании временной таблицы. Если существует несоответствие типа между данными в файле JSON и тем, что определено для поля, то метод READ-JSON завершается ошибкой, и набор данных остаётся в том состоянии, в котором он был непосредственно перед сбоем. То есть, частично завершённая обработка READ-JSON не резервируется.Пример вызова метода READ-JSON()
Далее приведён код для заполнения набора данных dsPO с использованием данных в файле JSON. Набор данных опустошается перед тем, как метод считывает данные из файла JSON.
DATASET dsPO:READ-JSON("FILE", "C:\OpenEdge\WRK\ProDataSets\log\dsPO.JSON", "EMPTY").