JSON Conversion in ABAP
Learn how to serialize ABAP internal tables to JSON and deserialize JSON back to structures using /ui2/cl_json.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
TYPES: BEGIN OF ty_emp_type,
employeeid TYPE c LENGTH 3,
employeename TYPE c LENGTH 20,
employeeage TYPE c LENGTH 3,
employeemobilenumber TYPE c LENGTH 10,
END OF ty_emp_type,
tt_emp_tab_type TYPE TABLE OF ty_emp_type WITH EMPTY KEY.
DATA(emp_tab) = VALUE #(
( employeeid = '1' employeename = 'Bharathi S' employeeage = '24' employeemobilenumber = '1234567890' )
( employeeid = '2' employeename = 'Siva S' employeeage = '24' employeemobilenumber = '1234567890' )
( employeeid = '3' employeename = 'Sasi S' employeeage = '24' employeemobilenumber = '1234567890' ) ).
* Table to JSON
DATA(lv_emp_table_to_json) = /ui2/cl_json=>serialize(
data = emp_tab
format_output = abap_true
pretty_name = /ui2/cl_json=>pretty_mode-camel_case ). "none,low_case,camel_case,extended, user, user_low_case
* JSON to table (with different column names)
TYPES: BEGIN OF ty_emp_type_map,
empid TYPE c LENGTH 3,
empname TYPE c LENGTH 20,
empage TYPE c LENGTH 3,
empmobnumber TYPE c LENGTH 10,
END OF ty_emp_type_map,
tt_emp_tab_type_map TYPE TABLE OF ty_emp_type_map WITH EMPTY KEY.
DATA(lt_emp_data_from_json_map) = VALUE tt_emp_tab_type_map( ).
/ui2/cl_json=>deserialize(
EXPORTING
json = lv_emp_table_to_json
name_mappings = VALUE #( ( abap = 'EMPID' json = 'EMPLOYEEID' )
( abap = 'EMPNAME' json = 'EMPLOYEENAME' )
( abap = 'EMPAGE' json = 'EMPLOYEEAGE' )
( abap = 'EMPMOBNUMBER' json = 'EMPLOYEEMOBILENUMBER' ) )
CHANGING
data = lt_emp_data_from_json_map ).
* JSON to table
DATA(lt_emp_data_from_json) = VALUE tt_emp_tab_type( ).
/ui2/cl_json=>deserialize(
EXPORTING
json = lv_emp_table_to_json
CHANGING
data = lt_emp_data_from_json
).
* Conversion Exists
TYPES: BEGIN OF ty_customer_data,
customerId TYPE kunnr,
language TYPE spras,
END OF ty_customer_data.
DATA(ls_sales_data) = VALUE ty_customer_data( language = 'E' customerid = '1' ).
DATA(lv_json_Sales_data) = /ui2/cl_json=>serialize(
data = ls_sales_data
conversion_exits = abap_true ).
"E -> Will be changed into EN
* Unknown type
DATA(lv_unknown_json) = `[ { "EmployeeId":"1", "EmployeeName":"Saranya S" },` &&
`{ "EmployeeId":"2", "EmployeeName":"Saran S" }]`.
DATA(lr_emp_data) = /ui2/cl_json=>generate( json = lv_unknown_json ).
" This can be accessed by lr_emp_data->*
This post is licensed under CC BY 4.0 by the author.