在 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 千的浏览

开始你的 职业

完成课程就获得认证

开始
广告
© . All rights reserved.