Fork me on GitHub

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

一图表明本文将要介绍的工具:

 

JSON是常见的数据格式,经常用于接口开发。ABAP开发者通常使用/ui2/cl_json来把JSON数据转换为相应的ABAP类型

在转换前,必须要定义相应的ABAP类型,比如,如果要转换如下的JSON数据,

{
    "KEY1": "VALUE1",
    "KEY2": "VALUE2"
}

则必须定义相应的ABAP结构类型,

TYPES: BEGIN OF t_record,
        key1 TYPE string,
        key2 TYPE string,
       END OF t_record.

转换的代码如下,

复制代码
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 ).
复制代码

这是一个简单例子,如果JSON的格式复杂,会让record的类型定义变成一项劳心劳力的工作...不仅要花时间和精力手写结构定义,一旦出错,也要花大量时间来排查错误。

 

JSON2ABAPType是一个开源工具,它可以通过JSON数据自动生成相应的ABAP结构定义,支持复杂JSON结构,可以为开发者节约时间精力。

 

项目地址:https://github.com/fidley/JSON2ABAPType

 

注意事项:

1,该工具依赖最新版的/ui2/cl_json,如果你的版本比较旧的话,可以需要打相关的SAP Notes (25264052629179) 。

2019.10.12更新:我已经提交了一个新的PR,用zui2_json代替了/ui2/cl_json,这是样做为了解决abap定义中组件顺序问题。在这以后,不再需要系统中有/ui2/cl_json。

 

2,JSON数据中的字段是可以省略的,注意要通过完整的JSON结构生成ABAP定义,否则可能生成不完整的ABAP定义(感谢ABAP亮亮的提示)。

3,建议使用ABAPGIT安装它。

 

安装后,使用事务代码SE38运行程序ZJSON2ABAPTYPE。

 

posted @   氢氦  阅读(4173)  评论(5编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
历史上的今天:
2017-10-10 为什么ABAP开发者需要使用面向对象技术?
点击右上角即可分享
微信分享提示