RXS_CreateJson()
This subprocedure is used to begin JSON composition. It creates a “root” JSON structure that other JSON objects, arrays, and data elements can be attached to.
Subprocedure Prototype
|
Returns an RXS_JsonStructureDS_t which can be used by the RXS JSON composition subprocedures. |
|
RXS_CreateJsonDS_t data structure which controls how RXS_CreateJson() functions. |
Example Code
*--------------------------------------------------------------
* This example creates a root JSON structure that is a JSON
* object. It allows subsequent JSON objects, arrays, or data
* elements to be attached in order to build a JSON document.
*--------------------------------------------------------------
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 ItemDS DS LikeDS(RXS_JsonStructureDS_t)
/free
RXS_ResetDS( CreateJsonDS : RXS_DS_TYPE_CREATEJSON );
RXS_ResetDS( RootDS : RXS_DS_TYPE_JSONSTRUCTURE );
RXS_ResetDS( ItemDS : RXS_DS_TYPE_JSONSTRUCTURE );
CreateJsonDS.JsonStructureType = RXS_JSON_STRUCTURE_OBJECT;
RootDS = RXS_CreateJson( CreateJsonDS );
// RootDS now contains a JSON structure that looks like this
// if printed:
//
// { }
// Create JSON object named "item" and attach it to RootDS
ItemDS = RXS_ComposeJsonObject( 'item' : RootDS );
// JSON now looks like this if printed:
//
// { "item": {} }
// Create JSON number named "id" and attach it to ItemDS
// Note that RXS_ComposeJsonNumber() uses character data,
// not numeric data, to allow it to handle the large
// numbers that JSON supports
RXS_ComposeJsonNumber( 'id' : '7' : ItemDS );
// JSON now looks like this if printed:
//
// { "item": { "id": 7 } }
// Create JSON string named "name" and attach it to ItemDS
RXS_ComposeJsonString( 'name' : 'headlight fluid' : ItemDS );
// JSON now looks like this if printed:
//
// { "item": { "id": 7, "name": "headlight fluid" } }
// Create JSON number named "price" and attach it to ItemDS
RXS_ComposeJsonNumber( 'price' : '12.50' : ItemDS );
// Enable JSON "prettification" (format to make more readable)
// and retrieve JSON into an RPG character data field
CreateJsonDS.Prettify = RXS_YES;
JSON = RXS_GetJsonString( CreateJsonDS );
// Character data retrieved:
//
// {
// "item": {
// "id": 7,
// "name": "headlight fluid",
// "price": 12.50
// }
// }
RXS_DestroyJson( CreateJsonDS );
*INLR = *ON;
/end-free
*--------------------------------------------------------------
* This example creates a root JSON structure that is a JSON
* array. It allows subsequent JSON objects, arrays, or data
* elements to be attached in order to build a JSON document.
*--------------------------------------------------------------
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 );
// RootDS now contains a JSON structure that looks like this
// if printed:
//
// "[]"
for i = 1 to 10;
// Elements in a JSON array do not have a name associated
// with them, so the first parameter of the RXS_ComposeJson
// subprocedures should be set to *OMIT
RXS_ComposeJsonNumber( *OMIT : %Char(i) : RootDS );
endfor;
// JSON now looks like:
//
// [1,2,3,4,5,6,7,8,9,10]
// Enable JSON "prettification" (format to make more readable)
// and retrieve JSON into an RPG character data field
CreateJsonDS.Prettify = RXS_YES;
JSON = RXS_GetJsonString( CreateJsonDS );
// Character data retrieved:
//
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
RXS_DestroyJson( CreateJsonDS );
*INLR = *ON;
/end-free
*--------------------------------------------------------------
* This example creates a root JSON structure that is a JSON
* object. It allows subsequent JSON objects, arrays, or data
* elements to be attached in order to build a JSON document.
*--------------------------------------------------------------
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 ItemDS DS LikeDS(RXS_JsonStructureDS_t)
/free
RXS_ResetDS( CreateJsonDS : RXS_DS_TYPE_CREATEJSON );
RXS_ResetDS( RootDS : RXS_DS_TYPE_JSONSTRUCTURE );
RXS_ResetDS( ItemDS : RXS_DS_TYPE_JSONSTRUCTURE );
CreateJsonDS.JsonStructureType = RXS_JSON_STRUCTURE_OBJECT;
RootDS = RXS_CreateJson( CreateJsonDS );
// RootDS now contains a JSON structure that looks like this
// if printed:
//
// { }
// Create JSON object named "item" and attach it to RootDS
ItemDS = RXS_ComposeJsonObject( 'item' : RootDS );
// JSON now looks like this if printed:
//
// { "item": {} }
// Create JSON number named "id" and attach it to ItemDS
// Note that RXS_ComposeJsonNumber() uses character data,
// not numeric data, to allow it to handle the large
// numbers that JSON supports
RXS_ComposeJsonNumber( 'id' : '7' : ItemDS );
// JSON now looks like this if printed:
//
// { "item": { "id": 7 } }
// Create JSON string named "name" and attach it to ItemDS
RXS_ComposeJsonString( 'name' : 'headlight fluid' : ItemDS );
// JSON now looks like this if printed:
//
// { "item": { "id": 7, "name": "headlight fluid" } }
// Create JSON number named "price" and attach it to ItemDS
RXS_ComposeJsonNumber( 'price' : '12.50' : ItemDS );
// Enable JSON "prettification" (format to make more readable)
// and retrieve JSON into an RPG character data field
CreateJsonDS.Prettify = RXS_YES;
RXS_GetJsonString( JSON : CreateJsonDS );
// Character data retrieved:
//
// {
// "item": {
// "id": 7,
// "name": "headlight fluid",
// "price": 12.50
// }
// }
RXS_DestroyJson( CreateJsonDS );
*INLR = *ON;
/end-free
*--------------------------------------------------------------
* This example creates a root JSON structure that is a JSON
* array. It allows subsequent JSON objects, arrays, or data
* elements to be attached in order to build a JSON document.
*--------------------------------------------------------------
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 );
// RootDS now contains a JSON structure that looks like this
// if printed:
//
// "[]"
for i = 1 to 10;
// Elements in a JSON array do not have a name associated
// with them, so the first parameter of the RXS_ComposeJson
// subprocedures should be set to *OMIT
RXS_ComposeJsonNumber( *OMIT : %Char(i) : RootDS );
endfor;
// JSON now looks like:
//
// [1,2,3,4,5,6,7,8,9,10]
// Enable JSON "prettification" (format to make more readable)
// and retrieve JSON into an RPG character data field
CreateJsonDS.Prettify = RXS_YES;
RXS_GetJsonString( JSON : CreateJsonDS );
// Character data retrieved:
//
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
RXS_DestroyJson( CreateJsonDS );
*INLR = *ON;
/end-free
Data Structures
|
|
|
|
|
Internal use only |
|
|
|
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. |
|
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. |
|
Internal use only |
|
Specifies the CCSID of the data being passed into the JSON composition subprocedures. Default is job CCSID. |
|
Specifies the CCSID that the JSON will be output as from RXS_GetJsonString(). Default is job CCSID. |