在 ABAP 中生成任何自定義 JSON


可以使用能夠編碼/解析任何 JSON 的類 ZCL_MDP_JSON 庫。JSON 透過以下功能在 ABAP 中得到本機支援

使用 JSON-XML - 它是已知的特殊 XML 格式,該格式可以用於使用 XML 表示來描述 JSON 資料。 

透過在 ABAP 型別和 JSON 之間定義對映。這在使用標識轉換 ID 進行序列化和反序列化中使用。

由於可以在語句 CALL TRANSFORMATION 中將 JSON 資料指定為 XML 源的不同形式,而且可以將 JSON 指定為目標。

檢視以下示例程式碼

示例

DATA text TYPE string VALUE `Hi JSON, ABAP here!`.
DATA writer TYPE REF TO cl_sxml_string_writer.
DATA json TYPE xstring.
“ABAP to JSON
writer =cl_sxml_string_writer=>create( type = if_sxml=>co_xt_json ).
CALL TRANSFORMATION id SOURCE text = text
   RESULT XML writer.
json = writer->get_output( ).
“JSON to ABAP
text =`{“TEXT”:”Hi ABAP, JSON here!”}`.
CALL TRANSFORMATION id SOURCE XML text
   RESULT text = text.

JSON/ABAP 序列化程式和反序列化程式

在 SAP ERP7.40 中,您有一個簡單的轉換,該轉換可用於將 ABAP 轉換為 JSON 和 JSON 轉換為 ABAP。當您需要最大效能而不是擔心使用序列化程式和反序列化程式時,這是最合適的。

您還可以參考以下連結: 

https://wiki.scn.sap.com/wiki/display/Snippets/One+more+ABAP+to+JSON+Serializer+and+Deserializer

ABAP 轉換為 JSON 的用法示例

DATA: lt_flight TYPE STANDARD TABLE OF sflight,
   lrf_descr TYPE REF TO cl_abap_typedescr,
   lv_json  TYPE string.
SELECT * FROM sflight INTO TABLE lt_flight.

* serialize table lt_flight into JSON, skipping initial fields and converting ABAP field names into camelCase
lv_json =/ui2/cl_json=>serialize( data = lt_flight compress = abap_true pretty_name = /ui2/cl_json=>pretty_mode-camel_case ).
WRITE / lv_json.
CLEAR lt_flight.

* deserialize JSON string json into internal table lt_flight doing camelCase to ABAP like field name mapping
/ui2/cl_json=>deserialize(EXPORTING json = lv_json pretty_name =/ui2/cl_json=>pretty_mode-camel_case CHANGING data = lt_flight ).

* serialize ABAP object into JSON string
lrf_descr = cl_abap_typedescr=>describe_by_data( lt_flight ).
lv_json =/ui2/cl_json=>serialize( lrf_descr ).
WRITE / lv_json.

更新於:05-12-2019

超過 2 千的瀏覽

開始你的 職業

完成課程就獲得認證

開始
廣告