abap内表和json互转

使用/UI2/CL_JSON方式实现abap内表和json互转

*&---------------------------------------------------------------------*
*& Report ZYC_JSON_01
*&---------------------------------------------------------------------*
*& zyc  21.11.2022 10:56:53
*& DESCRIBE	abap和json互转
*&---------------------------------------------------------------------*
REPORT ZYC_JSON_01.

DATA:lt_sflight LIKE TABLE OF sflight,
      ls_sflight LIKE sflight,
      lrf_descr TYPE REF TO cl_abap_typedescr,
      lv_json TYPE string.

SELECT * FROM sflight INTO TABLE lt_sflight UP TO 3 ROWS.

*内表转JSON
lv_json = /UI2/CL_JSON=>serialize(
  data = lt_sflight
  compress = abap_true
  pretty_name = /UI2/CL_JSON=>pretty_mode-camel_case
).
WRITE / lv_json.


*JSON转内表
/UI2/CL_JSON=>DESERIALIZE( EXPORTING JSON = lv_json
                                     PRETTY_NAME = /UI2/CL_JSON=>PRETTY_MODE-CAMEL_CASE
                            CHANGING DATA = lt_sflight[] ).

LOOP AT lt_sflight INTO ls_sflight FROM 2.
  WRITE : / ls_sflight-CARRID,ls_sflight-CONNID,ls_sflight-FLDATE.
ENDLOOP.


*动态获取表字段
DATA:DESCR_REF TYPE REF TO CL_ABAP_STRUCTDESCR.
FIELD-SYMBOLS:<FS_SFLIGHT> TYPE ABAP_COMPDESCR.
DESCR_REF ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( ls_sflight ).
LOOP AT DESCR_REF->COMPONENTS ASSIGNING <FS_SFLIGHT>.
  WRITE: / <FS_SFLIGHT>-NAME.
ENDLOOP.



/UI2/CL_JSON=>deserialize(
  EXPORTING
    json = lv_json
    pretty_name = /UI2/CL_JSON=>pretty_mode-camel_case
  CHANGING
    data = lt_sflight
).
lrf_descr = cl_abap_typedescr=>describe_by_data( lt_sflight ).
lv_json = /UI2/CL_JSON=>serialize( lrf_descr ).
WRITE / lv_json.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值