使用ABAP将数据库查询结果转换为json/yaml/xml [英] Convert database query result to json/yaml/xml with ABAP

查看:36
本文介绍了使用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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆