:::: МЕНЮ ::::

Сериализация данных и типов данных

Существует несколько способов сериализации и десериализации данных. Самые популярные из них:

  • В формате XML через CALL TRANSFORMATION
  • В формате JSON через класс /UI2/CL_JSON
  • В кластер данных через оператор EXPORT

В некоторых случаях, помимо самих данных, требуется сериализовать тип данных (например, если тип сериализуемых данных определяется в рантайме). Сделать это можно через класс CL_SALV_BS_DDIC.

XML сериализация

JSON сериализация

ZIP-сжатие данных

Данные в формате XML или JSON, как правило, избыточны. Если вы сериализуете данные для записи в лог или для передачи по RFC, то их лучше предварительно сжать. Сделать это можно через класс CL_ABAP_GZIP.

EXPORT в DATA CLUSTER

Используя оператор EXPORT можно сохранять данные в XSTRING. Оператор EXPORT поддерживает сжатие данных используя дополнение COMPRESSION ON.

Сериализация типов данных

Иногда возникает необходимость сериализовать вместе с данными их тип. Например, если тип данных определяется во время выполнения, то для десериализации необходимо сначала восстановить тип данных, а затем сами данные. Сделать это можно через класс CL_SALV_BS_DDIC.

Сравнение вариантов сериализации

Стоит отметить, что если в структуре сериализуемых данных содержится большое количество INITIAL полей, то при сериализации в XML или JSON форматы эти данные записываться не будут. Соответственно, размер выходных данных будет меньше. Ниже приведены сравнительные характеристики способов сериализации. В качестве теста была взята таблица BSEG размером в 50 тыс. строк.

ВремяРазмер[ZIP] Время[ZIP] Размер
XML6,07 сек274,97 Мб12,93 сек2,97 Мб
JSON36,56 сек33,18 Мб37,19 сек0,85 Мб
DATA0,20 сек234,19 Мб1,89 сек11,13 Мб

Присоединиться к обсуждению...