abap-json 数据解析和转换

14 篇文章 0 订阅

1. 系统标准方法

    /ui2/cl_json=>deserialize(
       EXPORTING
         json            = json
       CHANGING
         data            = data
           ).
    json = /ui2/cl_json=>serialize( data             = data ).
DATA: deserializer TYPE REF TO cl_trex_json_deserializer.
    CREATE OBJECT deserializer.
    deserializer->deserialize(
      EXPORTING
        json    = json
      IMPORTING
         abap   = abap
       ).
          DATA: serializer TYPE REF TO cl_trex_json_serializer.
          CREATE OBJECT serializer
            EXPORTING
              data = data.
          CALL METHOD serializer->serialize( ).
          json = serializer->get_data( ).

2. 使用transformation进行json转换,如果需要字段映射保留大小写,可以自定义transformation

    DATA: lo_writer        TYPE REF TO cl_sxml_string_writer,
          lv_output_length TYPE i,
          lt_binary_tab    TYPE STANDARD TABLE OF sdokcntbin,
          lv_jsonx         TYPE xstring.

    FIELD-SYMBOLS: <xt_json> TYPE i.

    ASSIGN ('IF_SXML=>CO_XT_JSON') TO <xt_json>.
    IF <xt_json> IS ASSIGNED.

      lo_writer = cl_sxml_string_writer=>create( type = <xt_json> ).

      CALL TRANSFORMATION id SOURCE text = data RESULT XML lo_writer.

      lv_jsonx = lo_writer->get_output( ).
      CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
        EXPORTING
          buffer        = lv_jsonx
        IMPORTING
          output_length = lv_output_length
        TABLES
          binary_tab    = lt_binary_tab.
      CALL FUNCTION 'SCMS_BINARY_TO_STRING'
        EXPORTING
          input_length  = lv_output_length
        IMPORTING
          text_buffer   = rv_json
          output_length = lv_output_length
        TABLES
          binary_tab    = lt_binary_tab.

      " strip {"TEXT":
      rv_json = rv_json+8.

      " strip trailing }
      lv_output_length = strlen( rv_json ) - 1.
      rv_json = rv_json(lv_output_length).
    ENDIF.

3. git开源项目代码不再举例可自行关键词abap json搜索

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值