ABAP DATA 和 JSON之间的转换
来源:互联网 发布:联排牙的利与弊 知乎 编辑:程序博客网 时间:2024/06/06 13:24
最近在需要使用ECC直接调用HTTP服务的第三方服务,ABAP需要对JSON进行序列化和反序列化。 最开始我找到了cl_trex_json_serializer和cl_trex_json_deserializer,进行序列化和反序列化。cl_trex_json_serializer很好的支持了内表到JSON,转换很简单,但是如果需要传输的JSON结构很复杂,在序列化的时候需要费很多周折。在使用cl_trex_json_deserializer的时候,也有一些小问题,KEY不能带双引号,还必须是大写。这2个类对于处理固定结构的JSON会很简单,但是我需要一个通用的方法。 后面找到了一个牛人写的自定义类zcl_mdp_json*,它包含deserializer,node,serializer一共三个类。可以很方便的根据参数进行JOSN的序列化和反序列化,它的处理逻辑就是把JSON作为一个对象进行处理,整个JSON是一个ROOT NODE,不停的获取CHILD NODE,直到到最底层。 下面是我的DEMO:
REPORT YMM00_ZWY04.DATA json_response TYPE string.DATA json_response2 TYPE string.DATA json_response3 TYPE string.json_response2 = '{"ErrorNo":"1","UIMessage":"ok","ErrorMessage":"","ErrorType":"0","parameters":{"log_session_id":"20170330102407397_162"},'.json_response3 = '"sap_test":{"row1":{"func_id":"HG9300008","datetime":"20170330 102407"}}}'.CONCATENATE json_response2 json_response3 INTO json_response SEPARATED BY 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.l_json_root_object = zcl_mdp_json_node=>deserialize( json = json_response ).DATA: l_string TYPE STRING.l_ErrorType_object = l_json_root_object->object_get_child_node( KEY = 'ErrorType').l_sap_test_object = l_json_root_object->object_get_child_node( KEY = 'sap_test').l_sap_test_ROW1_object = l_sap_test_object->object_get_child_node( KEY = 'row1').l_sap_test_func_id_object = l_sap_test_ROW1_object->object_get_child_node( KEY = 'func_id').WRITE: / l_sap_test_func_id_object->VALUE.
牛人的地址:An Open Source ABAP JSON Library – ZCL_MDP_JSON_*
代码地址:zcl_mdp_json GitHub上面的有代码的安装提示,还要需要注意里面的Issues,代码里面有点BUG的,在Issues里面 有提到了。
另外个地址:Performance of JSON from scratch - sXML versus ZCL_MDP_JSON 这是另外一个DEMO。
PS:发现了一个ABAP Open Source projects,里面有个zJSON,配合之前的zcl_mdp_json*,我们可以很好的序列化和反序列化各种各样的JSON了。
另外之前提到的cl_trex_json*,SAP已经不支持了,只能内部使用。所以使用的时候需要谨慎。
zJSON的安装需要ZSAPLINK,这个百度下就OK了。
如果觉得这篇BLOG对工作有用,请点个赞,赞,赞。哈哈
0 0
- ABAP DATA 和 JSON之间的转换
- PHP数组和Json之间的转换
- PHP数组和Json之间的转换
- Json 和字符串之间的相互转换
- json 和对象之间的转换
- PHP数组和Json之间的转换
- PHP数组和Json之间的转换
- JSON对象和字符串之间的转换
- java bean和json之间的转换
- PHP数组和Json之间的转换
- Java和JSON之间的转换
- map和json之间的转换
- json和JavaBean,String之间的转换
- JSON,String和对象之间的转换
- Java和JSON之间的转换
- json串和对象之间的转换
- PHP数组和Json之间的转换
- 集合和JSON之间的转换一
- JAVA ------SSH 面试题
- jQuery.extend() 函数详解
- Ubuntu设置交换分区
- 局域网git 克隆
- IOS Intro
- ABAP DATA 和 JSON之间的转换
- Unity3D优化技巧系列四
- AIDL笔记
- CSS 盒子模型
- 中间件
- 前端开发调试经验
- yii2 leftjoin 不显示子表的属性
- Maven 私有库和本地的安装与配置(一)
- 2017.3.31 棋盘制作 失败总结