ABAP,Java和JavaScript的序列化,反序列化

简介: ABAP,Java和JavaScript的序列化,反序列化

ABAP

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

image.png

最后一行的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

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

var c = JSON.parse(b);


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


目录
相关文章
|
1月前
|
JavaScript 前端开发 Java
Java和JavaScript的区别
【4月更文挑战第8天】Java和JavaScript的区别
15 1
|
1月前
|
前端开发 JavaScript Java
Java和JavaScript的应用场景有显著的不同
【4月更文挑战第8天】Java和JavaScript的应用场景有显著的不同
12 1
|
4天前
|
Web App开发 JavaScript 前端开发
《手把手教你》系列技巧篇(三十九)-java+ selenium自动化测试-JavaScript的调用执行-上篇(详解教程)
【5月更文挑战第3天】本文介绍了如何在Web自动化测试中使用JavaScript执行器(JavascriptExecutor)来完成Selenium API无法处理的任务。首先,需要将WebDriver转换为JavascriptExecutor对象,然后通过executeScript方法执行JavaScript代码。示例用法包括设置JS代码字符串并调用executeScript。文章提供了两个实战场景:一是当时间插件限制输入时,用JS去除元素的readonly属性;二是处理需滚动才能显示的元素,利用JS滚动页面。还给出了一个滚动到底部的代码示例,并提供了详细步骤和解释。
28 10
|
2天前
|
JavaScript 前端开发 Java
Java和Javascript互调的例子
Java和Javascript互调的例子
11 3
|
3天前
|
JavaScript 前端开发 Java
《手把手教你》系列技巧篇(四十)-java+ selenium自动化测试-JavaScript的调用执行-下篇(详解教程)
【5月更文挑战第4天】本文介绍了如何使用JavaScriptExecutor在自动化测试中实现元素高亮显示。通过创建并执行JS代码,可以改变元素的样式,例如设置背景色和边框,以突出显示被操作的元素。文中提供了一个Java示例,展示了如何在Selenium中使用此方法,并附有代码截图和运行效果展示。该技术有助于跟踪和理解测试过程中的元素交互。
8 0
|
12天前
|
编解码 JavaScript 前端开发
【专栏】介绍了字符串Base64编解码的基本原理和在Java、Python、C++、JavaScript及Go等编程语言中的实现示例
【4月更文挑战第29天】本文介绍了字符串Base64编解码的基本原理和在Java、Python、C++、JavaScript及Go等编程语言中的实现示例。Base64编码将24位二进制数据转换为32位可打印字符,用“=”作填充。文中展示了各语言的编码解码代码,帮助开发者理解并应用于实际项目。
|
15天前
|
存储 Java 测试技术
滚雪球学Java(22):序列化和反序列化
【4月更文挑战第11天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
33 1
滚雪球学Java(22):序列化和反序列化
|
17天前
|
JavaScript 前端开发 Oracle
java和JavaScript的区别
java和JavaScript的区别
11 3
|
18天前
|
SQL 存储 安全
每日一道面试题:Java中序列化与反序列化
每日一道面试题:Java中序列化与反序列化
11 0
|
28天前
|
存储 Java
Java输入输出:解释一下序列化和反序列化。
Java中的序列化和反序列化是将对象转换为字节流和反之的过程。ObjectOutputStream用于序列化,ObjectInputStream则用于反序列化。示例展示了如何创建一个实现Serializable接口的Person类,并将其序列化到文件,然后从文件反序列化回Person对象。
28 5