一圖表明本文將要介紹的工具:
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 (2526405, 2629179) 。
2019.10.12更新:我已經提交了一個新的PR,用zui2_json代替了/ui2/cl_json,這是樣做為了解決abap定義中組件順序問題。在這以后,不再需要系統中有/ui2/cl_json。
2,JSON數據中的字段是可以省略的,注意要通過完整的JSON結構生成ABAP定義,否則可能生成不完整的ABAP定義(感謝ABAP亮亮的提示)。
3,建議使用ABAPGIT安裝它。
安裝后,使用事務代碼SE38運行程序ZJSON2ABAPTYPE。