ABAP、JavaとJavaScriptのシーケンス化、逆シーケンス化


ABAP
1.ABAPはツールクラスcl_を提供するproxy_xml_Transform、その2つの方法abap_を通じてto_xml_xstringとxml_xstring_to_abapは2つのフォーマットの交換を実現する.

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とXMLフォーマットの相互変換を実現するために、内部にABAP simple transformationが生成される.
この生成されたtransformation IDをデバッガに記録し、トランザクションコードSTRANSで開くと、詳細が表示されます.
2.メソッド1の単一ステップデバッグでsimple transformationを発見するヒントがあり、simple transformationを直接呼び出す2つのフォーマットの交換をより簡単な方法で実現することができます.
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_abap 3.このように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}
元のオブジェクトインスタンスをファイルにシーケンス化し、オブジェクトインスタンスに逆シーケンス化した後、2つのインスタンスの内容はgenderフィールドが意図的に無視されたため、他のフィールドの値が同じであることがわかります.しかしながら、2つのオブジェクトインスタンスのアドレスは、シーケンス化の前後で変化している.
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のオリジナル記事をもっと入手するには、公衆番号「汪子熙」に注目してください.