国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

番茄西紅柿 / 671人閱讀

摘要:意思是告訴序列化框架,在序列化和反序列化時,不要考慮該字段。然而兩個對象實例的地址已經在序列化前后已經發生了變化。將對象序列化成字符串將字符串反序列化成對象同一樣,通過反序列化再序列化后得到的對象地址同原始對象不同。

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的原創文章,請關注公眾號"汪子熙":

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71951.html

相關文章

  • ABAPJavaJavaScript列化列化

    摘要:意思是告訴序列化框架,在序列化和反序列化時,不要考慮該字段。然而兩個對象實例的地址已經在序列化前后已經發生了變化。將對象序列化成字符串將字符串反序列化成對象同一樣,通過反序列化再序列化后得到的對象地址同原始對象不同。 ABAP 1. ABAP提供了一個工具類cl_proxy_xml_transform,通過它的兩個方法abap_to_xml_xstring和xml_xstring_to...

    beita 評論0 收藏0
  • ABAPJava單例模式攻防

    摘要:然而我只需要將這個單例類的構造函數通過反射設置成可以訪問,然后就能通過反射調用該構造函數,進而生成新的對象實例。針對這種攻擊,一種可行的防御措施是在單例類的構造函數內定義一個布爾變量,初始化為。當構造函數執行后,該變量被置為。 ABAP CLASS zcl_jerry_singleton DEFINITION PUBLIC FINAL CREATE PRIVATE . PUB...

    alanoddsoff 評論0 收藏0
  • JSON數據格式及其在WEB開發中應用

    摘要:是什么是一種輕量級的數據交換格式,采用完全獨立于語言的文本格式,是理想的數據交換格式。同時,是原生格式,這意味著在中處理數據不需要任何特殊的或工具包。底層存儲為格式是個構建在之上的新型查詢語言。 JSON是什么? JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,采用完全獨立于語言的文本格式,是理想的數據交換格式。同時,JSON是 Java...

    red_bricks 評論0 收藏0
  • 使用Java connector消費ABAP系統函數

    摘要:環境的搭建我的系統有個函數名叫,輸入一個和,會輸出為這對客戶和組合維護的一組和描述信息。測試如下下面是使用消費該函數的代碼為簡單起見沒有使用的庫進行的序列化。 Java Connector(JCO)環境的搭建:Step by step to download and configure JCO in your laptop我的ABAP系統有個函數名叫ZDIS_GET_UPSELL_MA...

    褰辯話 評論0 收藏0
  • 那些年我用過SAP IDE

    摘要:本文里提到的所有都是基于版本的,這使得我又一次被鄙視了使用的程序猿鄙視使用的程序猿。因此這些事物碼本身也是可以通過進行增強的。 在Google上根據關鍵字程序員鄙視鏈搜索,會得到68多萬條結果。 showImg(https://segmentfault.com/img/remote/1460000014000687); 玲瑯滿目的搜索結果里是眾多不同維度劃分的鄙視鏈。 其中有一個維度,...

    lewif 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<