abap数据类型转换_abap内表数据转JSON格式(两种方法)

本文介绍了在ABAP中将内表数据转换为JSON格式的两种方法,包括使用CALLTRANSFORMATION和CL_TREX_JSON_SERIALIZER、CL_TREX_JSON_DESERIALIZER类。详细步骤包括数据初始化、转换过程以及转换后的处理。
摘要由CSDN通过智能技术生成

一:语法:CALLTRANSFORMATIONidDATA:lv_emTYPEstring,

lv_em1TYPEstring.

DATA:lt_but021TYPETABLEOFbut021,

lt_but0211TYPETABLEOFbut021,

ls_but021TYPEbut021.

"数据

lv_em='test'.

ls_but021-partner='partner1'.

ls_but021-adr_kind='kind1'.

ls_but021-addrnumber='addr1'.

APPENDls_but021TOlt_but021.

ls_but021-partner='partner2'.

ls_but021-adr_kind='kind2'.

ls_but021-addrnumber='addr2'.

APPENDls_but021TOlt_but021.

"  abap 转json

DATA(json_writer)=cl_sxml_string_writer=>create(type=if_sxml=>co_xt_json).

CALLTRANSFORMATIONid

SOURCE content=lv_em

itable=lt_but021

RESULT XML json_writer.

DATA(json)=json_writer->get_output().

DATA:lv_jsonTYPEstring.

CALLFUNCTION'ECATT_CONV_XSTRING_TO_STRING'

EXPORTING

im_xstring=json

im_encoding='UTF-8'

IMPORTING

ex_string=lv_json.

"  json 转 abap

CALLTRANSFORMATIONid

SOURCE XML lv_json

RESULT content=lv_em1

itable=lt_but0211.

二:

DATA lv_json TYPE string."定义JSON存放的变量

DATA lr_json_serializer TYPE REF TO cl_trex_json_serializer."解析JSON用到的类(编译成JSON格式)

DATA lr_json_deserializer TYPE REF TO cl_trex_json_deserializer. "解析JSON用到的类(解析JSON格式)

DATA: BEGIN OF wa_wl,

zzfld0000ht  TYPE crmt_item_descr_partner,

zzfld0000hu  TYPE crmt_prshtextx_db,

zzfld0000hv  TYPE zdtel00002x,

zzfld0000hw  TYPE zdtel000135,

zzfld0000hx  TYPE zdtel0001d3,

zzfld0000i0  TYPE char10,

END OF wa_wl.

"根据结构通过这个类可以转换成JSON格式

CREATE OBJECT lr_json_serializer

EXPORTING

data = wa_wl.

lr_json_serializer->serialize( ).

lv_json = lr_json_serializer->get_data( ).

"OA需要用双引号才能识别是JSON格式这里需要转换下

REPLACE 'zzfld0000i0'IN lv_json WITH '"ZCBZ"'.

REPLACE 'zzfld0000ht'IN lv_json WITH '"WLBM"'.

REPLACE 'zzfld0000hu'IN lv_json WITH '"WLMC"'.

REPLACE 'zzfld0000hw'IN lv_json WITH '"WLDJ"'.

REPLACE 'zzfld0000hv'IN lv_json WITH '"WLSL"'.

REPLACE 'zzfld0000hx'IN lv_json WITH '"HJ"'.

IF i_num > 1.

CONCATENATE  str1 ',' INTO str1.

ENDIF.

CONCATENATE  str1 lv_json INTO str1.

IF str1 IS NOT INITIAL.

CONCATENATE '[' str1 ']' INTO str1.

CONDENSE str1 NO-GAPS.

set_fieldcat 'RTFTEXTDYNAMIC' str1.

ENDIF.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值