一圖代表本文將要介紹的工具:html
JSON是常見的數據格式,常常用於接口開發。ABAP開發者一般使用/ui2/cl_json來把JSON數據轉換爲相應的ABAP類型。git
在轉換前,必需要定義相應的ABAP類型,好比,若是要轉換以下的JSON數據,github
{ "KEY1": "VALUE1", "KEY2": "VALUE2" }
則必須定義相應的ABAP結構類型,json
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的類型定義變成一項勞心勞力的工做...不只要花時間和精力手寫結構定義,一旦出錯,也要花大量時間來排查錯誤。ui
JSON2ABAPType是一個開源工具,它能夠經過JSON數據自動生成相應的ABAP結構定義,支持複雜JSON結構,能夠爲開發者節約時間精力。spa
項目地址:https://github.com/fidley/JSON2ABAPTypecode
注意事項:htm
1,該工具依賴最新版的/ui2/cl_json,若是你的版本比較舊的話,能夠須要打相關的SAP Notes (2526405, 2629179) 。blog
2019.10.12更新:我已經提交了一個新的PR,用zui2_json代替了/ui2/cl_json,這是樣作爲了解決abap定義中組件順序問題。在這之後,應該再也不須要系統中有/ui2/cl_json。
2,JSON數據中的字段是能夠省略的,注意要經過完整的JSON結構生成ABAP定義,不然可能生成不完整的ABAP定義(感謝ABAP亮亮的提示)。
3,建議使用ABAPGIT安裝它。
安裝後,使用事務代碼SE38運行程序ZJSON2ABAPTYPE。