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_utclong            TYPE utclong
                               VALUE `2012-07-27 17:03:34.1234`,
          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

A call of the identity transformation ID (in which a JSON writer is specified as an XML target) creates and displays 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. The time stamp type utclong is formatted by default using yyyy-mm-ddThh:mm:ss.fffffffZ. Time stamps in packed numbers, on the other hand, require special domains.

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