abap java_ABAP,Java和JavaScript的序列化,反序列化
发布日期:2021-06-24 13:24:11 浏览次数:2 分类:技术文章

本文共 2145 字,大约阅读时间需要 7 分钟。

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的原创文章,请关注公众号"汪子熙":

转载地址:https://blog.csdn.net/weixin_33137081/article/details/114484552 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:access无法与wincc链接_wincc连接access
下一篇:java 上传图片到图片服务器_java从服务器上传本地图片到图片服务器

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月25日 15时58分36秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

想花钱速学互联网行业,大概花两三个月的时间,出来好找工作吗 2019-04-28
为何没有中文编程? 2019-04-28
招聘信息薪资范围是12-20K,能否要20K的薪资? 2019-04-28
软件外包商都是黑心的吗? 2019-04-28
Vue @import ‘~@/css/reset.css’;报错,解决方案 2019-04-28
Vue安装支持SCSS插件 2019-04-28
webstorm设置点击(单击)左侧项目资源管理器里面的文件,自动在右侧打开源代码文件 2019-04-28
360浏览器如何设置为像chrome谷歌浏览器那样输入网址回车在当前页面,而不是新建一个标签打开 2019-04-28
【记录】我在团队合作中遇到过的胎神(扑街仔)级别前端小伙伴 之 莫名其妙配置0.0.0.0这种IP访问 2019-04-28
【经典】全局公共scss文件的引入使用 2019-04-28
【抬杠】在某些时候不希望用户缩小浏览器的宽度,因为咳咳~会导致你的布局混乱,那么这个代码就是帮助你如何限制浏览器宽度的 2019-04-28
喂!讲真~我很讨厌chrome谷歌浏览器的默认填充输入框input样式咧,敲击讨厌滴啦,怎么去掉介个样式尼??? 2019-04-28
【原生基础版】js原生实现拖拽效果,注意不要忘了div的cursor用grab和grabbing(还是古法炮制、传统工艺的原生代码兼容性最好,推荐!!!) 2019-04-28
【加强版】js原生实现拖拽效果,这次没有用document的mousedown、mousemove、mouseup事件,我们来点干货! 2019-04-28
如何用bat文件快速计算项目代码行数 2019-04-28
《你的背包》歪唱 2019-04-28
散文《犯贱》 2019-04-28
【老司机开车了】CSS3实现“微信拍一拍头像抖动效果” 2019-04-28
如何在本地安装tomcat、jdk并且配置tomcat环境变量(window7) 2019-04-28
修改IDEA项目的JDK应用路径 2019-04-28