首页 > SAP > ABAP > 把SAP结构数据转换为JSON
2021
08-03

把SAP结构数据转换为JSON

把SAP银企直连接时,我们使用DMEE,把结构数据转换为XML,在接收到数据后,使用STRANS把XML转换为结构化数据,其实STRANS,也可以把结构化数据转换为JSON,

1.法一 、STRANS 转换

上面的程序中使用了事务码 STRANS定义的DEMO_ST_JSON_TABLE

2.法二、/ui2/cl_json

此方法,应该是最好的转换为JSON的方法,此方法可使用用驼峰参数,实现大不驼峰转换功能。并能解决其它转换时的双引号等问题。他不仅支持结构、内表转换成JSON,还支持嵌套结构deep structure这种复杂的结构

3.法三、CL_TREX_JSON_SERIALIZER与CL_TREX_JSON_DESERIALIZER

对于一些旧的系统不支持/ui2/cl_json,可以使用CL_TREX_JSON_SERIALIZER与CL_TREX_JSON_DESERIALIZER,这两方法来实现转换,

  • CL_TREX_JSON_SERIALIZER :将 ABAP 内表转换为 json 格式
  • CL_TREX_JSON_DESERIALIZER:json 转换为 ABAP 内表

这两个类有一点点问题,序列化生成的格式 key 没有引号,可能导致外部解析的失败。比如

而我们需要的是下面的格式:

所以需要对两个类进行改造,以符合自己的需求。首先我们使用事务码 SE24 将 CL_TREX_JSON_SERIALIZER 类拷贝一个新类,另存为 ZCL_TREX_JSON_SERIALIZER,然后将 RECURSE() 方法做两点改变:,43是增加的内容,还有一个问题,JAVA系统一般都会使用驼峰转换规则转换字段名(BUKRS_MATNR要转换为bukrsMatnr),而默认的会把字段转换为小写字母(BUKRS_MATNR要转换为bukrs_matnr),所以在55修改为55-70行为驼峰转换

相对应地, 将 CL_TREX_JSON_DESERIALIZER 拷贝成为 ZCL_TREX_JSON_DESERIALIZER,并且对 deserialize_object 方法做两点变更 

调用 ​​ZCL_TREX_JSON_SERIALIZER​​​ 实现序列化以及调用 ​​ZCL_TREX_JSON_DESERIALIZER​​ 实现反序列化的代码如下:

4.其它

类CL_STW_PARSE_JSON,也可把字符串转换成结构 化数据

最后编辑:
作者:yangsen
本站为个人博客网站,全由我个人维护,我从事SAP开发13年,其它ERP开发7年,基本都是零售行业。本站记录工作学习的过程, 有SAP相关询问专、兼职工作可随时联系我。 有网站相关的问题可直接在文章下方留言,或者联系我。 邮件:yan252@163.com给我。 QQ:415402519

留下一个回复

你的email不会被公开。