# RXS_GetJsonStringLen() This subprocedure is used to calculate the length of a JSON string that has been composed by [RXS_CreateJson()](https://isupport.katointegrations.com/rxs/3.5/rxs_createjson.md) and the other JSON composition subprocedures. ## Subprocedure Prototype | Field | Description | |---|---| | ` D RXS_GetJsonStringLen... D PR 10U 0 Extproc('RXS_GetJsonStringLen') D Opdesc` | | | ` D pCreateJsonDS LikeDS(RXS_CreateJsonDS_t) D Options(*Varsize)` | The CreateJson data structure where the JSON data is being composed. This is the data structure that was specified in the first parameter when RXS_CreateJson() was called. | ## Example Code ### Ex. 1: Get length of JSON string in memory ```rpgle *-------------------------------------------------------------- * This example creates a simple JSON object, adds a string data * field to it, and retrieves the length of the string in * memory. *-------------------------------------------------------------- H DFTACTGRP(*NO) BNDDIR('RXSBND') ACTGRP(*CALLER) /copy QRPGLECPY,RXSCB D JsonLen S 10U 0 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 ); // Composed JSON looks like: {"hello":"world"} JsonLen = RXS_GetJsonStringLen( CreateJsonDS ); // JsonLen is: 17 RXS_DestroyJson( CreateJsonDS ); *INLR = *ON; /end-free ``` ## Data Structures ### RXS_CreateJsonDS_t | Field | Description | |---|---| | ` D RXS_CreateJsonDS_t... D DS Qualified Template Inz` | | | ` D ReturnedErrorInfo... D LikeDS(RXS_ReturnedErrorInfoDS_t) Inz` | | | ` D DataStructureType... D 5I 0 Inz(RXS_DS_TYPE_CREATEJSON)` | **Internal use only** | | ` D OnErrorMessageType... D 5I 0` | | | ` D Prettify N Inz(RXS_NO)` | If set to RXS_YES, JSON retrieved with RXS_GetJsonString() will be formatted with whitespace to be "pretty" and more human readable. If set to RXS_NO, JSON will be returned in a compact form with as little whitespace as possible. **Valid Values:** `RXS_YES`, `RXS_NO` **Default Value:** `RXS_NO` | | ` D JsonStructureType... D N Inz(RXS_JSON_STRUCTURE_OBJECT)` | If set to RXS_JSON_STRUCTURE_OBJECT, the JSON document being created will begin with a root JSON object. If set to RXS_JSON_STRUCTURE_ARRAY, it will begin with a root JSON array. **Valid Values:** `RXS_JSON_STRUCTURE_OBJECT`, `RXS_JSON_STRUCTURE_ARRAY` **Default Value:** `RXS_JSON_STRUCTURE_OBJECT` | | ` D JsonStructurePtr... 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. **Default Value:** `RXS_CCSID_JOB` | | ` 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. **Default Value:** `RXS_CCSID_JOB` | | ` D TrimVariables... D N Inz(RXS_NO)` | Determines whether to trim leading and trailing spaces from each value passed to RXS_ComposeJsonString() (RXS_YES), or to leave all spaces in place (RXS_NO). **Valid Values:** `RXS_YES`, `RXS_NO` **Default Value:** `RXS_NO` |