ABAP

1. ABAP提供了一个工具类cl_proxy_xml_transform,通过它的两个方法abap_to_xml_xstring和xml_xstring_to_abap实现两种格式的互换。


REPORT zxm.DATA: ls_abap TYPE zzcrmost__pro001dotproduct1.DATA: ls_line LIKE LINE OF ls_abap-item.ls_line-logsys = 'AG3'.ls_line-object_family = '0401'.ls_line-product_id = 'MCF-0001'.ls_line-product_type = '01'.APPEND ls_line TO ls_abap-item.ls_line-logsys = 'QDD'.ls_line-object_family = '0402'.ls_line-product_id = 'MCF-0002'.ls_line-product_type = '02'.APPEND ls_line TO ls_abap-item.DATA(xml) = cl_proxy_xml_transform=>abap_to_xml_xstring( EXPORTING abap_data = ls_abap ddic_type = 'ZZCRMOST__PRO001DOTPRODUCT1' ).DATA: ls_abap2 LIKE ls_abap,ls_abap3 LIKE ls_abap.cl_proxy_xml_transform=>xml_xstring_to_abap( EXPORTING ddic_type = 'ZZCRMOST__PRO001DOTPRODUCT1' xml = xml IMPORTING abap_data = ls_abap2 ).ASSERT ls_abap2 = ls_abap.

最后一行的ASSERT语句,说明从ABAP格式转换成XML格式,再转换成ABAP格式,转换前的ABAP数据和转换后的ABAP数据是完全相同的。

如果我们单步调试工具类cl_proxy_xml_transform,发现它也没有神奇之处,

内部生成了一个ABAP simple transformation,以此来实现ABAP和XML格式的互相转换。

在调试器里记录下这个生成的transformation ID,然后用事务码STRANS打开,就可以看到明细了。

2. 有了方法1单步调试发现simple transformation的提示,我们可以用另一种更简单的办法实现两种格式的互换,即直接调用simple transformation:

DATA: lv_xml TYPE string.

CALL TRANSFORMATION id SOURCE b = ls_abap RESULT XML lv_xml.

生成的XML的根节点名称为b,因为上面代码调用参数SOURCE,将ABAP变量ls_abap传入时,绑定的参数名为“b”。

CALL TRANSFORMATION id SOURCE XML lv_xml RESULT b = ls_abap3.

ASSERT ls_abap2 = ls_abap3. 用这种方式进行ABAP->XML->ABAP仍然能得到最初的ABAP变量的值。

Java

定义一个简单的Employee类。

注意第12行代码,gender字段前面的关键字:transient。意思是告诉Java序列化框架,在序列化和反序列化时,不要考虑该gender字段。

第12行的代码将Employee类的实例,jerry写入了文件tempFile中。

将文件中的内容还原成对象实例:

打印输出:

Set id called: I042416

Employee {name='Jerry Wang', id=I042416, gender=male, birthday=Tue Aug 07 14:24:51 CST 2018}

Employee {name='Jerry Wang', id=I042416, gender=null, birthday=Tue Aug 07 14:24:51 CST 2018}

可以看到将原始对象实例序列化成文件,再反序列化成对象实例后,两个实例的内容除了gender字段因为刻意被忽略后,其他字段的值都相同。然而两个对象实例的地址已经在序列化前后已经发生了变化。

JavaScript

将JSON对象序列化成JSON字符串: JSON.stringify


var a = { "name": "Jerry", "skill": "Java" };var b = JSON.stringify(a);

将JSON字符串反序列化成JSON对象:

var c = JSON.parse(b);

同Java一样,通过反序列化再序列化后得到的对象地址同原始对象不同。

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

ABAP,Java和JavaScript的序列化,反序列化相关推荐

  1. ABAP, Java和JavaScript三种语言的比较

    写这个系列的初衷是SAP Chengdu office有越来越多的应届毕业生加入,这些新同事通过在大学的专业学习,具备了Java和JavaScript背景,但是进入SAP之后大家觉得ABAP没有Jav ...

  2. Jerry的ABAP, Java和JavaScript乱炖

    写这个系列的初衷是SAP Chengdu office有越来越多的应届毕业生加入,这些新同事通过在大学的专业学习,具备了Java和JavaScript背景,但是进入SAP之后大家觉得ABAP没有Jav ...

  3. java Serializable和Externalizable序列化反序列化详解--转

    一.什么是序列化?   "对象序列化"(Object Serialization)是 Java1.1就开始有的特性. 简单地说,就是可以将一个对象(标志对象的类型)及其状态转换为字 ...

  4. abap java_ABAP,Java和JavaScript的序列化,反序列化

    ABAP 1. ABAP提供了一个工具类cl_proxy_xml_transform,通过它的两个方法abap_to_xml_xstring和xml_xstring_to_abap实现两种格式的互换. ...

  5. java 之持久化和序列化(反序列化)

    1.什么是序列化和反序列化? Seriallization(序列化)是一种将对象以一连串的字节描述的过程: 反序列化deserialization是一种将这些字节重建成一个对象的过程. 2.什么情况下 ...

  6. 你真的会用ABAP, Java和JavaScript里的constructor么?

    如果constructor里调用了一个成员方法,这个方法被子类override了,当初始化一个子类实例时,父类的构造函数被的调用,此时父类构造函数的上下文里调用的成员方法,是父类的实现还是子类的实现? ...

  7. 2.JAVA自带的序列化反序列化机制

  8. 【Java】用Jackson进行JSON序列化/反序列化操作

    Java类和JSON Speaker类: import java.util.ArrayList; import java.util.Arrays; import java.util.List;publ ...

  9. Java 序列化反序列化框架比较

    文章目录 一.简介 二.序列化框架 1.JDK 2.XML序列化 3.JSON序列化 4.Hessian 5.Avro序列化 6.Kyro序列化 7.Protostuff 三.序列化框架对比测试 1. ...

最新文章

  1. 关于当前所用的MVP架构的所思所想
  2. 基于simulink的QAM-WIMAX的系统仿真
  3. 操作系统实验1—实现单处理机下的进程调度程序
  4. 每日一笑 | 在地铁上被老奶奶让座是一种什么样的体验?
  5. 数据链路层中的LLC
  6. DWA泊车算法的实现
  7. 情人节,怎么同时约会女神和女朋友
  8. 正则表达式系统教程.CHM
  9. 微信公开课讲师王泓渊:小游戏开放能力
  10. QT 播放器之VideoWidget
  11. 深度学习教程(1) | 深度学习概论(吴恩达·完整版)
  12. Python报错AssertionError: can only test a child process
  13. VC编程中,判断野指针
  14. Android获取地理坐标,Android 通过经纬度获取地理位置信息
  15. 编程语言c语言程序包括的几种语句
  16. 深度学习要多深,才能读懂人话?|阿里小蜜前沿探索
  17. 记一次Maximo移动端app报错的原因
  18. 循序搜寻法(使用卫兵)
  19. Day08_vant实现_网易云音乐案例
  20. 生活质量衡量系统_「电力闲聊」电能质量中的电压质量,有四个衡量指标

热门文章

  1. [汇编语言]-第十章 ret,retf,call指令
  2. Java学习之日期学习
  3. COJ1005(Binary Search Tree analog)
  4. 养成一个SQL好习惯带来一笔大财富
  5. 电脑开机进入桌面很慢的解决办法
  6. CAD 2021安装教程(超简单)
  7. matlab碎纸拼接相似函数,基于蒙特卡洛算法构建能量函数的碎纸图片拼接方法
  8. windows下的守护进程C++
  9. VC环境下的静态库(lib)使用和动态库(Dll)的使用(清晰版)
  10. c++ 中pair类模板的用法详解