• ABAP 中JSON格式的转换与解析


    RT,JSON是当今十分流行的一种轻量数据格式,广泛地应用于各种数据交换场景中。本文会介绍一种比较简单的将ABAP中的数据转换为JSON格式的方法。

    (如果你是因为引号的问题搜索到了这篇文章,请直接拉到底部“其它部分”)

    本文的正文内容中的转换类cl_trex_json_serializer不建议使用,参看 其他部分

    序列化

    使用cl_trex_json_serializer类来将结构转为JSON格式:

    DATA:
      serializer TYPE REF TO cl_trex_json_serializer,
      lv_json     TYPE string.
    
    DATA: BEGIN OF ls_kv,
            key1  TYPE string,
            value TYPE string,
          END OF ls_kv.
    
    DATA: lt_kv LIKE HASHED TABLE OF ls_kv WITH UNIQUE KEY key1.
    
    ls_kv-key1 = 'key'.
    ls_kv-value = ''.
    INSERT  ls_kv INTO TABLE lt_kv.
    
    CREATE OBJECT serializer
      EXPORTING
        data = ls_kv.
    
    serializer->serialize( ).
    
    lv_json = serializer->get_data( ).
    
    WRITE / lv_json.

    运行这段代码,输出结果,可以得到:

     

    反序列化

    使用cl_trex_json_deserializer来实现JSON的解析,代码如下:

    DATA: deserializer TYPE REF TO cl_trex_json_deserializer.
    
    CLEAR ls_kv.
    
    
    CREATE OBJECT deserializer.
    
    deserializer->deserialize(
        EXPORTING json = lv_json
        IMPORTING abap = ls_kv  ).
    
    WRITE: / ls_kv-key1, / ,ls_kv-value.

    运行程序,可以看到结果:

    以上就是ABAP中转换JSON数据的方法。当然,cl_trex_json_serializer与cl_trex_json_deserializer并不是唯一可以使用的类,SAP也为我们提供了CL_FDT_JSON, /UI2/CL_JSON等来进行JSON的序列化与反序列化,关于/UI2/CL_JSON它的更多信息,可以阅读这篇文章:

    One more ABAP to JSON Serializer and Deserializer

    其它 (/ui2/cl_json)

    眼尖的读者也许注意到,这两个对象返回的的JSON是{key: "value"},而规范的JSON应该是{"key": "value"}的格式。如果使用它们来解析{"key": "value"}的话,会因为双引号的问题导致出现异常,解析失败。在这种情况下,推荐使用/UI2/CL_JSON:

    types: begin of t_record,
             key1 type string,
             key2 type string,
           end of t_record.
    
    data: json type string.
    data: record type t_record.
    
    json = '{"key1": "VALUE1",  "key2": "VALUE2"}'.
    
    /ui2/cl_json=>deserialize( exporting json = json changing data = record ).

    某些系统中可能没有安装相应的Add-on(UI2 Add-on,可以应用的版本是 SAP_BASIS 700 – 76X),因此找不到/UI2/CL_JSON类,我提取了相关代码:ZUI2_JSON.zip,可以点击下载,直接复制到系统中使用。也可以使用abapgit安装。

    本文链接:http://www.cnblogs.com/hhelibeb/p/6617488.html 

    (本来想写下最近学到的使用post方法调用restful api的方法,然而搜索一下发现这些百度也可以搜到..。所以后面就不继续了。

    参考阅读:One more ABAP to JSON Serializer and Deserializer

          JSON2ABAPType:根据JSON数据结构生成ABAP类型定义

     
  • 相关阅读:
    java list随机截取(洗牌)
    LINUX安装Docker及Portainer可视化界面
    总结一些选题
    深入理解BIO、NIO、AIO
    InnoDB和MyISAM存储引擎的区别
    MyBatis的解析和运行原理
    [杂项/无聊向]《美食大战老鼠》强卡最优策略搜索代码(非玩家勿入)
    CSP 2019 游记
    NOI 2019 游记
    Comet OJ
  • 原文地址:https://www.cnblogs.com/hhelibeb/p/6617488.html
Copyright © 2020-2023  润新知