RAP – Serialize JSON
RAP’da JSON serialize işlemleri için /UI2/CL_JSON sınıfı kullanılır.
Serialize Structure
Structure yapısındaki bir JSON verisinin serialize işlemi,
- CODE
DATA: BEGIN OF ls_data,
city_name TYPE string VALUE 'İstanbul',
country TYPE string VALUE 'Türkiye',
END OF ls_data.
FINAL(json) = /ui2/cl_json=>serialize( data = ls_data
compress = abap_false
pretty_name = /ui2/cl_json=>pretty_mode-none
“name_mappings = lt_mappings->*
assoc_arrays = abap_true
assoc_arrays_opt = abap_true
format_output = abap_true ).
- RESULT
{
"CITY_NAME": "İstanbul",
"COUNTRY": "Türkiye"
}
Eğer CITY_NAME anahtarını küçük harfle görüntülemek istiyorsanız pretty_name’i şu şekilde değiştirebilirsiniz:
| /ui2/cl_json=>pretty_mode-none | {“CITY_NAME”:”İstanbul”,”COUNTRY”:”Türkiye”} |
| /ui2/cl_json=>pretty_mode-low_case | {“city_name”:”İstanbul”,”country”:”Türkiye”} |
| /ui2/cl_json=>pretty_mode-camel_case | {“cityName”:”İstanbul”,”country”:”Türkiye”} |
| /ui2/cl_json=>pretty_mode-extended | {“cityName”:”İstanbul”,”country”:”Türkiye”} |
| /ui2/cl_json=>pretty_mode-user | {“CITY_NAME”:”İstanbul”,”COUNTRY”:”Türkiye”} |
| /ui2/cl_json=>pretty_mode-user_low_case | {“city_name”:”İstanbul”,”country”:”Türkiye”} |
Anahtarı CityName olarak değiştirmek istiyorsanız, bu pretty_name seçenekleriyle kullanılamaz. Bunun için name_mappings’i kullanabilirsiniz:
- CODE
DATA(lt_mappings) = NEW /ui2/cl_json=>name_mappings( ( abap = 'city_name' json = 'CityName' ) ).
FINAL(json) = /ui2/cl_json=>serialize( data = ls_data
compress = abap_false
pretty_name = /ui2/cl_json=>pretty_mode-none
name_mappings = lt_mappings->*
assoc_arrays = abap_true
assoc_arrays_opt = abap_true
format_output = abap_true ).
- RESULT
{
"CityName": "İstanbul",
"COUNTRY": "Türkiye"
}
Serialize Table
Tablo yapısındaki bir JSON verisinin serialize işlemi,
- CODE
TYPES: BEGIN OF ty_city,
city_name TYPE string,
country TYPE string,
END OF ty_city.
DATA: lt_data TYPE TABLE OF ty_city.
lt_data = VALUE #( ( city_name = 'İstanbul' country = 'Türkiye' )
( city_name = 'Frankfurt' country = 'Deutschland' )
).
FINAL(json) = /ui2/cl_json=>serialize( data = lt_data).
- RESULT
[
{
"CITY_NAME": "İstanbul",
"COUNTRY": "Türkiye"
},
{
"CITY_NAME": "Frankfurt",
"COUNTRY": "Deutschland"
}
]
Serialize Deep Structure
Deep structure yapısındaki bir JSON verisinin serialize işlemi,
- CODE
TYPES: BEGIN OF ty_street,
street_name TYPE string,
END OF ty_street.
TYPES: tt_street TYPE TABLE OF ty_street WITH DEFAULT KEY.
TYPES: BEGIN OF ty_city,
city_name TYPE string,
country TYPE string,
streets TYPE tt_street,
END OF ty_city.
DATA: BEGIN OF ls_data,
data TYPE ty_city,
END OF ls_data.
ls_data_structure-data-city_name = 'İstanbul'.
ls_data_structure-data-country = 'Türkiye'.
ls_data_structure-data-streets = VALUE #( ( street_name = 'Str 1' )
( street_name = 'Str 2' )).
FINAL(json) = /ui2/cl_json=>serialize( data = ls_data).
- RESULT
{
"DATA": {
"CITY_NAME": "İstanbul",
"COUNTRY": "Türkiye",
"STREETS": [
{
"STREET_NAME": "Str 1"
},
{
"STREET_NAME": "Str 2"
}
]
}
}

