Skip to content

ABAP Keyword Documentation →  ABAP - Reference →  Data Interfaces and Communication Interfaces →  ABAP and JSON →  JSON, Examples 

JSON, asJSON for Additional XML Schema Data Types

This example demonstrates asJSON for additional XML Schema Data Types.

Other versions: 7.31 | 7.40 | 7.54

Source Code

    DATA:
      BEGIN OF examples,
        BEGIN OF boolean,
          ab_true   TYPE abap_bool
                    VALUE abap_true,
          ab_false  TYPE abap_bool
                    VALUE abap_false,
          xsd_true  TYPE xsdboolean
                    VALUE abap_true,
          xsd_false TYPE xsdboolean
                    VALUE abap_false,
        END OF boolean,
        BEGIN OF date,
          ab_date  TYPE d
                   VALUE `20121001`,
          xsd_date TYPE xsddate_d
                   VALUE `20121001`,
        END OF date,
        BEGIN OF datetime,
          ab_timestamp          TYPE timestamp
                                VALUE `20120727170334`,
          ab_timestampl         TYPE timestampl
                               VALUE `20120727170334.1234`,
          xsd_datetime_z        TYPE xsddatetime_z
                                VALUE `20120727170334`,
          xsd_datetime_long_z   TYPE xsddatetime_long_z
                               VALUE `20120727170334.1234`,
          xsd_datetime_offset   TYPE xsddatetime_offset
                               VALUE `20120727170334+140`,
          xsd_datetime_local    TYPE xsddatetime_local
                                VALUE `20120727170334`,
          xsd_datetime_local_dt TYPE xsddatetime_local_dt
                                VALUE `20120727170334`,
        END OF datetime,
        BEGIN OF language,
          ab_language  TYPE sy-langu
                       VALUE `D`,
          xsd_language TYPE xsdlanguage
                       VALUE `D`,
        END OF language,
        BEGIN OF uuid,
          ab_uuid_raw  TYPE x LENGTH 16
                       VALUE `005056A207C81ED1BFC6B69E72F50550`,
          ab_uuid_char  TYPE c LENGTH 32
                       VALUE `005056A207C81ED1BFC6B69E72F50550`,
          xsd_uuid_raw  TYPE xsduuid_raw
                       VALUE `005056A207C81ED1BFC6B69E72F50550`,
          xsd_uuid_char TYPE xsduuid_char
                       VALUE `005056A207C81ED1BFC6B69E72F50550`,
        END OF uuid,
      END OF examples.

    "Transformation to JSON
    DATA(out) = cl_demo_output=>new(
      )->begin_section( 'asJSON'  ).
    DATA(writer) = cl_sxml_string_writer=>create(
      type = if_sxml=>co_xt_json ).
    CALL TRANSFORMATION id SOURCE examples = examples
                           RESULT  XML writer.
    DATA(json) = writer->get_output( ).
    out->write_json( json ).

    "JSON-XML
    out->next_section( 'asJSON-XML' ).
    DATA(reader) = cl_sxml_string_reader=>create( json ).
    DATA(xml_writer) = cl_sxml_string_writer=>create( ).
    reader->next_node( ).
    reader->skip_node( xml_writer ).
    DATA(xml) = xml_writer->get_output( ).
    out->write_xml( xml ).

    "asXML
    out->next_section( 'asXML' ).
    CALL TRANSFORMATION id SOURCE examples = examples
                           RESULT  XML xml.
    out->write_xml( xml )->display( ).

Description

By calling the identity transformation ID, for which a JSON writer is specified as an XML target, you generate and display the asJSON format of a structure. The structure components are typed with normal ABAP types and also typed with special domains for XML schema data types.

As a comparison, the JSON-XML representation of the JSON data and the asXML representation of the ABAP data is also shown.