【ABAP】内部テーブルをJSONに変換する
やること
ABAPで「内部テーブルからJSONへの変換」と「JSONから内部テーブルへの変換」を行う。
方法は「CALL TRANSFORMATION」と「/UI2/CL_JSON」の2パターン。
参考
パターンA:「CALL TRANSFORMATION」を使用
ソースコード
Y_TEST_JSON
DATA lv_output_length TYPE i.
DATA lt_binary_tab TYPE STANDARD TABLE OF sdokcntbin.
DATA lv_json TYPE string.
SELECT *
FROM sflight
INTO TABLE @DATA(lt_flightdata).
* (A-1)内部テーブルからJSONに変換
DATA(lo_writer) = cl_sxml_string_writer=>create( type = if_sxml=>co_xt_json ).
CALL TRANSFORMATION id SOURCE text = lt_flightdata RESULT XML lo_writer.
DATA(lv_jsonx) = lo_writer->get_output( ).
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_jsonx
IMPORTING
output_length = lv_output_length
TABLES
binary_tab = lt_binary_tab.
CALL FUNCTION 'SCMS_BINARY_TO_STRING'
EXPORTING
input_length = lv_output_length
IMPORTING
text_buffer = lv_json
output_length = lv_output_length
TABLES
binary_tab = lt_binary_tab.
cl_demo_output=>display_json( lv_json ).
* (A-2)JSONから内部テーブルに変換
CLEAR lt_flightdata.
CALL TRANSFORMATION id SOURCE XML lv_jsonx RESULT text = lt_flightdata.
cl_demo_output=>display( lt_flightdata ).
実行結果
(A-1)内部テーブルからJSONへの変換
ソースコード
Y_TEST_JSON
DATA lv_output_length TYPE i.
DATA lt_binary_tab TYPE STANDARD TABLE OF sdokcntbin.
DATA lv_json TYPE string.
SELECT *
FROM sflight
INTO TABLE @DATA(lt_flightdata).
* (A-1)内部テーブルからJSONに変換
DATA(lo_writer) = cl_sxml_string_writer=>create( type = if_sxml=>co_xt_json ).
CALL TRANSFORMATION id SOURCE text = lt_flightdata RESULT XML lo_writer.
DATA(lv_jsonx) = lo_writer->get_output( ).
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_jsonx
IMPORTING
output_length = lv_output_length
TABLES
binary_tab = lt_binary_tab.
CALL FUNCTION 'SCMS_BINARY_TO_STRING'
EXPORTING
input_length = lv_output_length
IMPORTING
text_buffer = lv_json
output_length = lv_output_length
TABLES
binary_tab = lt_binary_tab.
cl_demo_output=>display_json( lv_json ).
* (A-2)JSONから内部テーブルに変換
CLEAR lt_flightdata.
CALL TRANSFORMATION id SOURCE XML lv_jsonx RESULT text = lt_flightdata.
cl_demo_output=>display( lt_flightdata ).
実行結果
(A-1)内部テーブルからJSONへの変換
(A-2)JSONから内部テーブルへの変換
パターンB:/UI2/CL_JSONを使用
ソースコード
Y_TEST_JSON
SELECT *
FROM sflight
INTO TABLE @DATA(lt_flightdata).
* (B-1)内部テーブルからJSONに変換
DATA(lv_json) = /ui2/cl_json=>serialize( lt_flightdata ).
cl_demo_output=>display_json( lv_json ).
* (B-2)JSONから内部テーブルに変換
CLEAR lt_flightdata.
/ui2/cl_json=>deserialize( EXPORTING json = lv_json CHANGING data = lt_flightdata ).
cl_demo_output=>display( lt_flightdata ).
実行結果
(B-1)内部テーブルからJSONへの変換
Y_TEST_JSON
SELECT *
FROM sflight
INTO TABLE @DATA(lt_flightdata).
* (B-1)内部テーブルからJSONに変換
DATA(lv_json) = /ui2/cl_json=>serialize( lt_flightdata ).
cl_demo_output=>display_json( lv_json ).
* (B-2)JSONから内部テーブルに変換
CLEAR lt_flightdata.
/ui2/cl_json=>deserialize( EXPORTING json = lv_json CHANGING data = lt_flightdata ).
cl_demo_output=>display( lt_flightdata ).
(B-2)JSONから内部テーブルへの変換
Author And Source
この問題について(【ABAP】内部テーブルをJSONに変換する), 我々は、より多くの情報をここで見つけました https://qiita.com/mahko2/items/c0de1c1f41103593b47e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .