日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

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

發布時間:2025/3/8 javascript 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ABAP,Java和JavaScript的序列化,反序列化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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的序列化,反序列化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。