在 ABAP 中生成任何自定义 JSON


可以使用能够对任何 JSON 编码/解析的类 ZCL_MDP_JSON 库。ABAP 本机通过以下功能支持 JSON

使用 JSON-XML-它是一种特殊的 XML 格式,可用于描述 JSON 数据使用 XML 表示形式。 

通过定义 ABAP 类型和 JSON 之间的映射。这用于通过身份转换 ID 进行序列化和反序列化。

因为你可以如在 CALL TRANSFORMATION 语句中作为 XML 源以不同形式指定 JSON 数据,并且可以指定 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-Dec-2019

2K+ 浏览

开启你的 职业生涯

完成课程并获得认证

开始
广告
© . All rights reserved.