ABAP Json解析案例

1 篇文章 0 订阅

ABAP解析返回的JSON 案例

DATA:LTOKEN TYPE STRING.
  DATA: LL_LINES(10),"行数
        LL_TABIX(10),"循环标号
        LL_PECNT     TYPE P LENGTH 6 DECIMALS 2, "百分比
        LL_PECET(6),"百分数
        LL_TEXT(40)."消息
  CLEAR: LL_LINES,LL_TABIX,LL_PECNT,LL_PECET,LL_TEXT.

*  CALL FUNCTION 'ZWMS_XHY_GET_TOKEN'
*    IMPORTING
*      LV_RESULT = LTOKEN.
  DATA: LEN            TYPE        I, "发送报文长度
        LEN_STRING     TYPE        STRING,
        URL            TYPE        STRING, "接口地址
        LV_URL         TYPE AGR_URL,
        LV_URL_STR     TYPE STRING,
        HTTP_CLIENT    TYPE REF TO IF_HTTP_CLIENT, "http客户端
        LV_SERVER_NAME TYPE ZE_SERVER_NAME,
        POST_STRING    TYPE        STRING,
        RESULT         TYPE        STRING,
        LTIMEEND       TYPE STRING, "时间戳结束
        LTIMEST        TYPE STRING. "时间戳开始
  LV_URL_STR = 'your URL '.

  CALL METHOD CL_HTTP_CLIENT=>CREATE_BY_URL
    EXPORTING
      URL                = LV_URL_STR
    IMPORTING
      CLIENT             = HTTP_CLIENT
    EXCEPTIONS
      ARGUMENT_NOT_FOUND = 1
      PLUGIN_NOT_ACTIVE  = 2
      INTERNAL_ERROR     = 3
      OTHERS             = 4.
  "设定传输请求内容格式以及编码格式
  HTTP_CLIENT->REQUEST->SET_CONTENT_TYPE( CONTENT_TYPE = 'application/json; charset=utf-8' ).

  "设置http method 为Get
  HTTP_CLIENT->REQUEST->SET_METHOD( IF_HTTP_REQUEST=>CO_REQUEST_METHOD_POST ).

  DATA:LVJSON TYPE STRING.
  DATA:L_UUID32 TYPE SYSUUID_C32,
       ILOGS    LIKE ZRFCLOGS OCCURS 0 WITH HEADER LINE.

  DATA:ITEM TYPE I. "行项目
  ITEM = 0.
  LVJSON = '{"SQL":"SELECT top 20 MATNR from ZVMARC "}'. //your  json  参数
  LEN = STRLEN( LVJSON ).
  ILOGS-CALPARMI =  LVJSON.
  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = '~request_method'
      VALUE = 'POST'.
  "设置传入字符串
  CALL METHOD HTTP_CLIENT->REQUEST->SET_CDATA
    EXPORTING
      DATA   = LVJSON
      OFFSET = 0
      LENGTH = LEN.
  "发送
  CALL METHOD HTTP_CLIENT->SEND
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2
      HTTP_PROCESSING_FAILED     = 3
      HTTP_INVALID_TIMEOUT       = 4
      OTHERS                     = 5.

  "接收
  CALL METHOD HTTP_CLIENT->RECEIVE
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2
      HTTP_PROCESSING_FAILED     = 3.
  "提取返回字符串
  RESULT = HTTP_CLIENT->RESPONSE->GET_CDATA( ).
  DATA LS_CHAR TYPE C.
  LS_CHAR = CL_ABAP_CHAR_UTILITIES=>CR_LF.  " 获取换行符

  DATA: L_JSON_ROOT_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
  DATA: L_ERRORTYPE_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
  DATA: L_SAP_TEST_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
  DATA: L_ERRORNO_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
  DATA: L_SAP_TEST_ROW1_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
  DATA: L_SAP_TEST_FUNC_ID_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
  DATA: LTAR TYPE TABLE OF ZCL_MDP_JSON_NODE=>TYP_ARRAY_CHILDREN.

  L_JSON_ROOT_OBJECT = ZCL_MDP_JSON_NODE=>DESERIALIZE( JSON = RESULT ).
  DATA: L_STRING TYPE STRING.
  L_ERRORTYPE_OBJECT = L_JSON_ROOT_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'RESULT').
  LTAR  = L_ERRORTYPE_OBJECT->ARRAY_CHILDREN().
  LOOP AT LTAR INTO DATA(LSAR).
    L_SAP_TEST_OBJECT = LSAR-NODE.
    L_SAP_TEST_FUNC_ID_OBJECT  =  L_SAP_TEST_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MATNR' ).
    WRITE :/ L_SAP_TEST_FUNC_ID_OBJECT->VALUE.
  ENDLOOP.
  WRITE:/ '123'.

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ABAP是一种高级编程语言,通常用于SAP系统的开发,它是面向对象的,可扩展的,具有跨平台的特性。而JSON是一种轻量级的数据交换格式,由于它具有易读性,易解析性以及广泛的支持,已经成为Web开发、移动开发等领域的数据传输标准。 对于在SAP系统中使用JSON数据格式的情况,我们需要使用ABAP中的JSON解析器来将JSON数据转化为ABAP内部的数据结构。在ABAP中,有两种常用的JSON解析方式: 1. JSON转换器(SAP内部类型) 这种方式是将JSON字符串转换成SAP内部类型的结构(例如table、structure、string、numeric值等),从而方便我们在ABAP程序中进行后续的操作。 首先需要通过调用兼容JSON的结构描述语言的类,生成兼容JSON语法的文档类型,之后再根据需要的数据结构,利用WRITE_JSON_FILE函数生成JSON数据格式,最后再将JSON数据格式传入PARSE_JSON()函数解析。 利用JSON转换器的方式,我们可以通过简单的语句实现JSON数据与ABAP内部数据的转化,但是由于其复杂的使用方式,这种方法不太适合在大型的应用中使用。 2. JSON解析器接口(SAP内置类) 另外一种解析JSON数据的方式是使用SAP内置的JSON解析器接口,这种方法比较容易理解和使用,也比较适合在大型的应用中使用。 ABAP中提供了CL_TREX_JSON_PARSER类,它可以处理所有JSON数据结构(例如object、array、value等)并将其转换成ABAP数据类型。利用该类,我们可以轻松地将JSON数据转换为ABAP内部数据结构,同时也能够轻松地将ABAP数据类型转换为JSON数据格式。 总而言之,无论是使用SAP内置的JSON转换器,还是直接在ABAP中使用JSON解析器接口,都可以轻松地将JSON数据转换成ABAP内部数据结构,并进行各种操作或者通过HTTP或其他协议与外部系统进行数据交互。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gavin_gxh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值