摘要:意思是告訴序列化框架,在序列化和反序列化時(shí),不要考慮該字段。然而兩個(gè)對(duì)象實(shí)例的地址已經(jīng)在序列化前后已經(jīng)發(fā)生了變化。將對(duì)象序列化成字符串將字符串反序列化成對(duì)象同一樣,通過(guò)反序列化再序列化后得到的對(duì)象地址同原始對(duì)象不同。
ABAP
1. ABAP提供了一個(gè)工具類cl_proxy_xml_transform,通過(guò)它的兩個(gè)方法abap_to_xml_xstring和xml_xstring_to_abap實(shí)現(xiàn)兩種格式的互換。
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語(yǔ)句,說(shuō)明從ABAP格式轉(zhuǎn)換成XML格式,再轉(zhuǎn)換成ABAP格式,轉(zhuǎn)換前的ABAP數(shù)據(jù)和轉(zhuǎn)換后的ABAP數(shù)據(jù)是完全相同的。
如果我們單步調(diào)試工具類cl_proxy_xml_transform,發(fā)現(xiàn)它也沒(méi)有神奇之處,
內(nèi)部生成了一個(gè)ABAP simple transformation,以此來(lái)實(shí)現(xiàn)ABAP和XML格式的互相轉(zhuǎn)換。
在調(diào)試器里記錄下這個(gè)生成的transformation ID,然后用事務(wù)碼STRANS打開(kāi),就可以看到明細(xì)了。
2. 有了方法1單步調(diào)試發(fā)現(xiàn)simple transformation的提示,我們可以用另一種更簡(jiǎn)單的辦法實(shí)現(xiàn)兩種格式的互換,即直接調(diào)用simple transformation:
DATA: lv_xml TYPE string.
CALL TRANSFORMATION id SOURCE b = ls_abap RESULT XML lv_xml.
生成的XML的根節(jié)點(diǎn)名稱為b,因?yàn)樯厦娲a調(diào)用參數(shù)SOURCE,將ABAP變量ls_abap傳入時(shí),綁定的參數(shù)名為“b”。
CALL TRANSFORMATION id SOURCE XML lv_xml RESULT b = ls_abap3.
ASSERT ls_abap2 = ls_abap3. 用這種方式進(jìn)行ABAP->XML->ABAP仍然能得到最初的ABAP變量的值。
Java定義一個(gè)簡(jiǎn)單的Employee類。
注意第12行代碼,gender字段前面的關(guān)鍵字:transient。意思是告訴Java序列化框架,在序列化和反序列化時(shí),不要考慮該gender字段。
第12行的代碼將Employee類的實(shí)例,jerry寫入了文件tempFile中。
將文件中的內(nèi)容還原成對(duì)象實(shí)例:
打印輸出:
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}
可以看到將原始對(duì)象實(shí)例序列化成文件,再反序列化成對(duì)象實(shí)例后,兩個(gè)實(shí)例的內(nèi)容除了gender字段因?yàn)榭桃獗缓雎院?,其他字段的值都相同。然而兩個(gè)對(duì)象實(shí)例的地址已經(jīng)在序列化前后已經(jīng)發(fā)生了變化。
JavaScript將JSON對(duì)象序列化成JSON字符串: JSON.stringify
var a = { "name": "Jerry", "skill": "Java" }; var b = JSON.stringify(a);
將JSON字符串反序列化成JSON對(duì)象:
var c = JSON.parse(b);
同Java一樣,通過(guò)反序列化再序列化后得到的對(duì)象地址同原始對(duì)象不同。
要獲取更多Jerry的原創(chuàng)文章,請(qǐng)關(guān)注公眾號(hào)"汪子熙":
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/71951.html
摘要:意思是告訴序列化框架,在序列化和反序列化時(shí),不要考慮該字段。然而兩個(gè)對(duì)象實(shí)例的地址已經(jīng)在序列化前后已經(jīng)發(fā)生了變化。將對(duì)象序列化成字符串將字符串反序列化成對(duì)象同一樣,通過(guò)反序列化再序列化后得到的對(duì)象地址同原始對(duì)象不同。 ABAP 1. ABAP提供了一個(gè)工具類cl_proxy_xml_transform,通過(guò)它的兩個(gè)方法abap_to_xml_xstring和xml_xstring_to...
摘要:然而我只需要將這個(gè)單例類的構(gòu)造函數(shù)通過(guò)反射設(shè)置成可以訪問(wèn),然后就能通過(guò)反射調(diào)用該構(gòu)造函數(shù),進(jìn)而生成新的對(duì)象實(shí)例。針對(duì)這種攻擊,一種可行的防御措施是在單例類的構(gòu)造函數(shù)內(nèi)定義一個(gè)布爾變量,初始化為。當(dāng)構(gòu)造函數(shù)執(zhí)行后,該變量被置為。 ABAP CLASS zcl_jerry_singleton DEFINITION PUBLIC FINAL CREATE PRIVATE . PUB...
摘要:是什么是一種輕量級(jí)的數(shù)據(jù)交換格式,采用完全獨(dú)立于語(yǔ)言的文本格式,是理想的數(shù)據(jù)交換格式。同時(shí),是原生格式,這意味著在中處理數(shù)據(jù)不需要任何特殊的或工具包。底層存儲(chǔ)為格式是個(gè)構(gòu)建在之上的新型查詢語(yǔ)言。 JSON是什么? JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式,采用完全獨(dú)立于語(yǔ)言的文本格式,是理想的數(shù)據(jù)交換格式。同時(shí),JSON是 Java...
摘要:環(huán)境的搭建我的系統(tǒng)有個(gè)函數(shù)名叫,輸入一個(gè)和,會(huì)輸出為這對(duì)客戶和組合維護(hù)的一組和描述信息。測(cè)試如下下面是使用消費(fèi)該函數(shù)的代碼為簡(jiǎn)單起見(jiàn)沒(méi)有使用的庫(kù)進(jìn)行的序列化。 Java Connector(JCO)環(huán)境的搭建:Step by step to download and configure JCO in your laptop我的ABAP系統(tǒng)有個(gè)函數(shù)名叫ZDIS_GET_UPSELL_MA...
摘要:本文里提到的所有都是基于版本的,這使得我又一次被鄙視了使用的程序猿鄙視使用的程序猿。因此這些事物碼本身也是可以通過(guò)進(jìn)行增強(qiáng)的。 在Google上根據(jù)關(guān)鍵字程序員鄙視鏈搜索,會(huì)得到68多萬(wàn)條結(jié)果。 showImg(https://segmentfault.com/img/remote/1460000014000687); 玲瑯滿目的搜索結(jié)果里是眾多不同維度劃分的鄙視鏈。 其中有一個(gè)維度,...
閱讀 735·2023-04-25 19:43
閱讀 3981·2021-11-30 14:52
閱讀 3807·2021-11-30 14:52
閱讀 3871·2021-11-29 11:00
閱讀 3802·2021-11-29 11:00
閱讀 3904·2021-11-29 11:00
閱讀 3580·2021-11-29 11:00
閱讀 6182·2021-11-29 11:00