RXS_ComposeJsonString()

This subprocedure is used to add a JSON string element to a parent JSON Object or Array.

Subprocedure Prototype

     D JSON_ComposeJsonString...
     D                 PR                  Extproc('JSON_ComposeJsonString')
     D                                     Opdesc

     D  pName                              Const Like(RXS_Var64Kv_t)
     D                                     Options(*Omit:*Varsize)

Name to assign to JSON string data element. If being added to an array, the value of this parameter should be *OMIT.

     D  pInput                             Like(RXS_Var16Mv_t) Const
     D                                     Options(*Varsize)

Data to assign to JSON string data element.

     D  pStructureDS                       Const LikeDS(RXS_JsonStructureDS_t)

RXS_JsonStructureDS_t data structure containing a parent JSON Object or Json Array.

Example Code

      *--------------------------------------------------------------
      * This example creates a simple JSON object, adds a string data
      * field to it, retrieves the created JSON, and then calls
      * RXS_DestroyJson() to clean up.
      *--------------------------------------------------------------
     H DFTACTGRP(*NO) BNDDIR('RXSBND') ACTGRP(*CALLER)

      /copy QRPGLECPY,RXSCB

     D JSON            S                   Like(RXS_Var64Kv_t)

     D CreateJsonDS    DS                  LikeDS(RXS_CreateJsonDS_t)
     D RootDS          DS                  LikeDS(RXS_JsonStructureDS_t)
      /free
        RXS_ResetDS( CreateJsonDS : RXS_DS_TYPE_CREATEJSON );
        RXS_ResetDS( RootDS : RXS_DS_TYPE_JSONSTRUCTURE );
        
        CreateJsonDS.JsonStructureType = RXS_JSON_STRUCTURE_OBJECT;
        RootDS = RXS_CreateJson( CreateJsonDS );

        RXS_ComposeJsonString( 'hello' : 'world' : RootDS );

        JSON = RXS_GetJsonString( CreateJsonDS );
        // JSON looks like:
        //
        // { "hello": "world" }

        RXS_DestroyJson( CreateJsonDS );

        *INLR = *ON;
      /end-free
      *--------------------------------------------------------------
      * This example creates a simple JSON object, adds 5 string data
      * fields to it, retrieves the created JSON, and then calls
      * RXS_DestroyJson() to clean up.
      *--------------------------------------------------------------
     H DFTACTGRP(*NO) BNDDIR('RXSBND') ACTGRP(*CALLER)

      /copy QRPGLECPY,RXSCB

     D JSON            S                   Like(RXS_Var64Kv_t)

     D CreateJsonDS    DS                  LikeDS(RXS_CreateJsonDS_t)
     D RootDS          DS                  LikeDS(RXS_JsonStructureDS_t)
     D i               S              3U 0
      /free
        RXS_ResetDS( CreateJsonDS : RXS_DS_TYPE_CREATEJSON );
        RXS_ResetDS( RootDS : RXS_DS_TYPE_JSONSTRUCTURE );
        
        CreateJsonDS.JsonStructureType = RXS_JSON_STRUCTURE_ARRAY;
        RootDS = RXS_CreateJson( CreateJsonDS );

        for i = 1 to 5;
          RXS_ComposeJsonString( *OMIT : %Char(i) : RootDS );
        endfor;

        JSON = RXS_GetJsonString( CreateJsonDS );
        // JSON looks like:
        //
        // ["1","2","3","4","5"]

        RXS_DestroyJson( CreateJsonDS );

        *INLR = *ON;
      /end-free
      *--------------------------------------------------------------
      * This example creates a simple JSON object, adds a string data
      * field to it, retrieves the created JSON, and then calls
      * RXS_DestroyJson() to clean up.
      *--------------------------------------------------------------
     H DFTACTGRP(*NO) BNDDIR('RXSBND') ACTGRP(*CALLER)

      /define RXSV6R1
      /copy QRPGLECPY,RXSCB

     D JSON            S                   Like(RXS_Var64Kv_t)

     D CreateJsonDS    DS                  LikeDS(RXS_CreateJsonDS_t)
     D RootDS          DS                  LikeDS(RXS_JsonStructureDS_t)
      /free
        RXS_ResetDS( CreateJsonDS : RXS_DS_TYPE_CREATEJSON );
        RXS_ResetDS( RootDS : RXS_DS_TYPE_JSONSTRUCTURE );
        
        CreateJsonDS.JsonStructureType = RXS_JSON_STRUCTURE_OBJECT;
        RootDS = RXS_CreateJson( CreateJsonDS );

        RXS_ComposeJsonString( 'hello' : 'world' : RootDS );

        RXS_GetJsonString( JSON : CreateJsonDS );
        // JSON looks like:
        //
        // { "hello": "world" }

        RXS_DestroyJson( CreateJsonDS );

        *INLR = *ON;
      /end-free
      *--------------------------------------------------------------
      * This example creates a simple JSON object, adds 5 string data
      * fields to it, retrieves the created JSON, and then calls
      * RXS_DestroyJson() to clean up.
      *--------------------------------------------------------------
     H DFTACTGRP(*NO) BNDDIR('RXSBND') ACTGRP(*CALLER)

      /define RXSV6R1
      /copy QRPGLECPY,RXSCB

     D JSON            S                   Like(RXS_Var64Kv_t)

     D CreateJsonDS    DS                  LikeDS(RXS_CreateJsonDS_t)
     D RootDS          DS                  LikeDS(RXS_JsonStructureDS_t)
     D i               S              3U 0
      /free
        RXS_ResetDS( CreateJsonDS : RXS_DS_TYPE_CREATEJSON );
        RXS_ResetDS( RootDS : RXS_DS_TYPE_JSONSTRUCTURE );
        
        CreateJsonDS.JsonStructureType = RXS_JSON_STRUCTURE_ARRAY;
        RootDS = RXS_CreateJson( CreateJsonDS );

        for i = 1 to 5;
          RXS_ComposeJsonString( *OMIT : %Char(i) : RootDS );
        endfor;

        RXS_GetJsonString( JSON : CreateJsonDS );
        // JSON looks like:
        //
        // ["1","2","3","4","5"]

        RXS_DestroyJson( CreateJsonDS );

        *INLR = *ON;
      /end-free

Data Structures

     D RXS_JsonStructureDS_t...
     D                 DS                  Qualified Template Inz

     D   ReturnedErrorInfo...
     D                                     LikeDS(RXS_ReturnedErrorInfoDS_t) Inz

     D   DataStructureType...
     D                                5I 0 Inz(RXS_DS_TYPE_JSONSTRUCTURE)

Internal use only

     D   OnErrorMessageType...
     D                                5I 0

     D   JsonStructureType...
     D                                 N   Inz(RXS_JSON_STRUCTURE_OBJECT)

Internal use only

     D   JsonStructure@...
     D                                 *   Inz(*Null)

Internal use only

     D   InputCcsid...
     D                               10I 0 Inz(RXS_CCSID_JOB)

Specifies the CCSID of the data being passed into the JSON composition subprocedures. Default is job CCSID.

     D   OutputCcsid...
     D                               10I 0 Inz(RXS_CCSID_JOB)

Specifies the CCSID that the JSON will be output as from RXS_GetJsonString(). Default is job CCSID.