[SAP ABAP] 序列化与反序列化

1.序列化

序列化表示将ABAP对象类型转成json字符串

我们可以使用方法/ui2/cl_json=>serialize实现序列化,可以将ABAP中的内表结构转成json字符串类型

REPORT z437_test_2024.

* 自定义数据类型
TYPES: BEGIN OF ty_makt,
  matnr LIKE makt-matnr,  " 物料编号
  maktx LIKE makt-maktx,  " 物料描述
END OF ty_makt.

* 定义变量
DATA: json_str TYPE string.
* 定义内表
DATA: lt_makt TYPE STANDARD TABLE OF ty_makt.

* 获取数据
SELECT matnr, maktx
  INTO CORRESPONDING FIELDS OF TABLE @lt_makt
  FROM makt
  UP TO 5 ROWS.

* 序列化:把内表lt_makt转换为JSON字符串
CALL METHOD /ui2/cl_json=>serialize
  EXPORTING
    data             = lt_makt
  RECEIVING
    r_json           = json_str.

cl_demo_output=>write( json_str ).
cl_demo_output=>display( ).

输出结果:

/ui2/cl_json是处理json转换的类,该类封装了序列化与反序列化的方法

2.反序列化

反序列化表示将json字符串转成ABAP对象类型

我们可以使用方法/ui2/cl_json=>deserialize实现反序列化,可以将json字符串转成ABAP中的内表结构类型

REPORT z437_test_2024.

* 自定义数据类型
TYPES: BEGIN OF ty_makt,
  matnr LIKE makt-matnr,  " 物料编号
  maktx LIKE makt-maktx,  " 物料描述
END OF ty_makt.

* 定义变量
DATA: json_str TYPE string.
* 定义内表
DATA: lt_makt TYPE STANDARD TABLE OF ty_makt.

* 获取数据
SELECT matnr, maktx
  INTO CORRESPONDING FIELDS OF TABLE @lt_makt
  FROM makt
  UP TO 5 ROWS.

* 序列化:把内表lt_makt转换为JSON字符串
CALL METHOD /ui2/cl_json=>serialize
  EXPORTING
    data             = lt_makt
  RECEIVING
    r_json           = json_str.

cl_demo_output=>write( json_str ).

* 清空内表
CLEAR lt_makt.

* 反序列化:json字符串转内表
CALL METHOD /ui2/cl_json=>deserialize
  EXPORTING
    json             = json_str
  changing
    data             = lt_makt.

cl_demo_output=>write( lt_makt ).
cl_demo_output=>display( ).

输出结果:

/ui2/cl_json是处理json转换的类,该类封装了序列化与反序列化的方法

相关推荐
Tester_孙大壮38 分钟前
第4章:Python TDD消除重复与降低依赖实践
开发语言·驱动开发·python
数据小小爬虫2 小时前
如何使用Python爬虫获取微店商品详情:代码示例与实践指南
开发语言·爬虫·python
代码驿站5202 小时前
JavaScript语言的软件工程
开发语言·后端·golang
java1234_小锋2 小时前
Java中如何安全地停止线程?
java·开发语言
siy23332 小时前
[c语言日寄]结构体的使用及其拓展
c语言·开发语言·笔记·学习·算法
一只会飞的猪_3 小时前
国密加密golang加密,java解密
java·开发语言·golang
四念处茫茫3 小时前
【C语言系列】深入理解指针(2)
c语言·开发语言·visual studio
LucianaiB3 小时前
C语言之图像文件的属性
c语言·开发语言·microsoft·c语言之图像文件的属性
向着开发进攻3 小时前
深入理解 Java 并发编程中的锁机制
java·开发语言
CURRY30_HJH3 小时前
JAVA 使用反射比较对象属性的变化,记录修改日志。使用注解【策略模式】,来进行不同属性枚举值到中英文描述的切换,支持前端国际化。
java·开发语言