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"
            }
        ]
    }
}

İletişim

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir