首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何用CL_CLB_PARSE_JSON解析json字符串到动态生成的ABAP内表结构里

如何用CL_CLB_PARSE_JSON解析json字符串到动态生成的ABAP内表结构里

作者头像
Jerry Wang
发布2020-01-21 14:53:20
1.7K0
发布2020-01-21 14:53:20
举报
*&---------------------------------------------------------------------*
*& Report  ZTESTDATA
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZJSON_TWITTER.
data: lv_content type string,
      lv_number TYPE i,
      lr_json TYPE REF TO CL_CLB_PARSE_JSON,
      lxstring TYPE xstring,
      lv_converted TYPE string.

lv_content = zcl_jerry_tool=>GET_FILE_CONTENT_BY_PATH( '\\TSHomeServer\TSHome$\i042416\Desktop\12.txt' ).
lxstring   = cl_abap_codepage=>convert_to( lv_content ).
lv_converted = CL_CLB_TOOLS=>XSTRING_TO_STRING( lxstring ).


data: lv_id type string,
      lv_text type string,
      lv_string_table TYPE string_table,
      lr_data TYPE REF TO CL_ABAP_TYPEDESCR,
      lr_indices TYPE REF TO CL_ABAP_TABLEDESCR,
      lrs_user_mentions    TYPE REF TO cl_abap_structdescr,
      lrs_entities         TYPE REF TO cl_abap_structdescr,
      lrs_root             TYPE REF TO cl_abap_structdescr,
      lrt_user_mentions    TYPE REF TO cl_abap_tabledescr,
      ls_comp          TYPE abap_componentdescr,
      lt_components    TYPE abap_component_tab,
      lr_content          TYPE REF TO data.

FIELD-SYMBOLS: <structure> TYPE any.

lr_data = CL_ABAP_TYPEDESCR=>describe_by_data( lv_id ).

lr_indices ?= CL_ABAP_TYPEDESCR=>describe_by_data( lv_string_table ).
ls_comp-name = 'id'.
ls_comp-type ?= lr_data.
APPEND ls_comp TO lt_components.

ls_comp-name = 'id_str'.
ls_comp-type ?= lr_data.
APPEND ls_comp TO lt_components.

ls_comp-name = 'indices'.
ls_comp-type ?= lr_indices.
APPEND ls_comp TO lt_components.

ls_comp-name = 'name'.
ls_comp-type ?= lr_data.
APPEND ls_comp TO lt_components.

ls_comp-name = 'screen_name'.
ls_comp-type ?= lr_data.
APPEND ls_comp TO lt_components.

lrs_user_mentions  = cl_abap_structdescr=>create( lt_components ).
lrt_user_mentions      = cl_abap_tabledescr=>create( lrs_user_mentions ).

CLEAR: lt_components.
ls_comp-name = 'user_mentions'.
ls_comp-type ?= lrt_user_mentions.
APPEND ls_comp TO lt_components.

lrs_entities = cl_abap_structdescr=>create( lt_components ).

CLEAR: lt_components.
ls_comp-name = 'created_at'.
ls_comp-type ?= lr_data.
APPEND ls_comp TO lt_components.

ls_comp-name = 'entities'.
ls_comp-type ?= lrs_entities.
APPEND ls_comp TO lt_components.

ls_comp-name = 'id'.
ls_comp-type ?= lr_data.
APPEND ls_comp TO lt_components.

ls_comp-name = 'text'.
ls_comp-type ?= lr_data.
APPEND ls_comp TO lt_components.

lrs_root = cl_abap_structdescr=>create( lt_components ).
CREATE DATA lr_content TYPE HANDLE lrs_root.
ASSIGN lr_content->* TO <structure>.

BREAK-POINT.
CREATE OBJECT lr_json.

CALL METHOD lr_json->JSON_TO_DATA
   EXPORTING
      IV_JSON = lv_converted
   CHANGING
      c_data = <structure>.
BREAK-POINT.

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-01-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档