本文介绍了使用ABAP将数据库查询结果转换为json/yaml/xml的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有办法用ABAP将数据库查询结果转换成json/yaml/xml?

Is there a way to convert a database query result to json/yaml/xml with ABAP?

推荐答案

    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.

输出

[{"mandt":"000","carrid":"AA","connid":0017,"fldate":20130515,"price":422.94,"currency":"USD","planetype":"747-400","seatsmax":385,
"seatsocc":375,"paymentsum":192683.30,"seatsmaxB":31,"seatsoccB":31,"seatsmaxF":21,"seatsoccF":19},{"mandt":"000","carrid":"AA",
"connid....
{"ABSOLUTE_NAME":"\TYPE=%_T00004S00000000O0000012480","ADMIN_TAB":"\TYPE=%_T00004S00000000O0000012480",
"ADMIN_TAB_LINE":"\TYPE=%_T00004S00000000O0000012480","DECIMALS":0,"HAS_UNIQUE_KEY":false,"INITIAL_SIZE":0,
"KEY":[{"NAME":"MANDT"},{"NAME":"CARRID"},{"NAME":"CO....

更多信息请阅读序列化器和反序列化器

更新

另一个例子:

首先,您应该使用 CL_SXML_STRING_WRITERJson 作为类型将 ABAP 创建到 JSON Writer.然后调用转换将 String 转换为 JSON 格式的 String .最后一步是在JSON中检索Writer的输出.

First, you should create the ABAP to JSON Writer with the CL_SXML_STRING_WRITER with Json as Type.Then Call the transformation to convert the String to JSON formatted String .The last Step is to retrieve the Output of the Writer in JSON.

DATA text TYPE string VALUE `Hello JSON, I’m ABAP!`.
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( ).

这篇关于使用ABAP将数据库查询结果转换为json/yaml/xml的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-20 09:52
查看更多