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

news/2024/12/16 7:49:30/

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, maktxINTO CORRESPONDING FIELDS OF TABLE @lt_maktFROM maktUP TO 5 ROWS.* 序列化:把内表lt_makt转换为JSON字符串
CALL METHOD /ui2/cl_json=>serializeEXPORTINGdata             = lt_maktRECEIVINGr_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, maktxINTO CORRESPONDING FIELDS OF TABLE @lt_maktFROM maktUP TO 5 ROWS.* 序列化:把内表lt_makt转换为JSON字符串
CALL METHOD /ui2/cl_json=>serializeEXPORTINGdata             = lt_maktRECEIVINGr_json           = json_str.cl_demo_output=>write( json_str ).* 清空内表
CLEAR lt_makt.* 反序列化:json字符串转内表
CALL METHOD /ui2/cl_json=>deserializeEXPORTINGjson             = json_strchangingdata             = lt_makt.cl_demo_output=>write( lt_makt ).
cl_demo_output=>display( ).

输出结果:

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


http://www.ppmy.cn/news/1555534.html

相关文章

prometheus监控之黑盒(blackbox)监控

1.简单介绍 blackbox-exporter项目地址:https://github.com/prometheus/blackbox_exporter blackbox-exporter是Prometheus官方提供的一个黑盒监控解决方案,blackbox-exporter无须安装在被监控的目标环境中,用户只需要将其安装在与Promethe…

VBA 连续打印多个内容成PDF

VBA 连续打印多个内容成PDF Dim wb As Workbook Dim sht1 As Worksheet Set sht1 ActiveSheet PT ThisWorkbook.PathApplication.ScreenUpdating FalseApplication.DisplayAlerts FalseApplication.Calculation xlCalculationManual For i [aa2] To [ab2][ad2] iSet wb …

onActivated()生命周期不可用的替代方法

onActivated()生命周期不可用的替代方法 Q:为什么会出现onActivated()生命周期不可用的情况? A:当keep-alive存在但是,无法使用router-view的时候,英文onActivated()的是前提是keep-alive和router-view同时存在。 如…

mysql、postgresql、oceanbase调优

一、mysql 1、my.cnf [mysqld_safe] log-error=/data/mysql/log/mysql.log pid-file=/data/mysql/run/mysqld.pid[client] socket=/data/mysql/run/mysql.sock default-character-set=utf8[mysqld] basedir=/usr/local/mysql tmpdir=/data/mysql/tmp datadir=/data/mysql/dat…

Docker 镜像源 阿里镜像源限制后其他镜像源

要在Docker中修改镜像源,你需要编辑或创建Docker的配置文件来指定新的镜像源地址。以下是如何为Docker配置中国镜像源的步骤: 找到或创建Docker的配置文件daemon.json。 在Linux系统中,该文件通常位于/etc/docker/目录下。 编辑daemon.jso…

[2024-12 CISCN 长城杯] Crypto

fffffhash 【也可以看这题,一样的:https://github.com/DownUnderCTF/Challenges_2023_Public/blob/main/crypto/fnv/solve/solution_joseph_LLL.sage】 题目描述: import os from Crypto.Util.number import * def giaogiao(hex_string):b…

Jackson @JsonFormat 注解

1. 概述 Jackson 是一个著名的Java库,专门用于将Java对象转换为JSON格式以及从JSON反序列化回Java对象。有时,在这个转换过程中,可能需要自定义某些字段的格式,特别是日期和时间字段。在这种情况下,Jackson的JsonForm…

leetcode-73.矩阵置零-day5

class Solution {public void setZeroes(int[][] mat) {int m mat.length, n mat[0].length;// 1. 扫描「首行」和「首列」记录「首行」和「首列」是否该被置零boolean r0 false, c0 false;for (int i 0; i < m; i) {if (mat[i][0] 0) {r0 true;break;}}for (int j …