DataFlex
DataFlex
JSON: Nested Array
See more JSON Examples
Here we have a JSON object that contains nested arrays. This example demonstrates how to access the contents of the nested arrays.
{
"numbers" : [
["even", 2, 4, 6, 8],
["prime", 2, 3, 5, 7, 11, 13]
] }
Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoJson
String sJsonStr
Variant vOuterArray
Handle hoOuterArray
Integer iNumArrays
Integer i
Variant vInnerArray
Handle hoInnerArray
Integer iNumInnerItems
Integer j
String sTemp1
Integer iTemp1
Boolean bTemp1
Move False To iSuccess
Get Create (RefClass(cComChilkatJsonObject)) To hoJson
If (Not(IsComObjectCreated(hoJson))) Begin
Send CreateComObject of hoJson
End
// This is the above JSON with whitespace chars removed (SPACE, TAB, CR, and LF chars).
// The presence of whitespace chars for pretty-printing makes no difference to the Load
// method.
Move '{ "numbers" : [ ["even", 2, 4, 6, 8], ["prime", 2, 3, 5, 7, 11, 13] ] }' To sJsonStr
Get ComLoad Of hoJson sJsonStr To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoJson To sTemp1
Showln sTemp1
Procedure_Return
End
// Get the value of the "numbers" object, which is an array that contains JSON arrays.
Get ComArrayOf Of hoJson "numbers" To vOuterArray
If (IsComObject(vOuterArray)) Begin
Get Create (RefClass(cComChilkatJsonArray)) To hoOuterArray
Set pvComObject Of hoOuterArray To vOuterArray
End
Get ComLastMethodSuccess Of hoJson To bTemp1
If (bTemp1 = False) Begin
Showln "numbers array not found."
Procedure_Return
End
Get ComSize Of hoOuterArray To iNumArrays
For i From 0 To (iNumArrays - 1)
Get ComArrayAt Of hoOuterArray i To vInnerArray
If (IsComObject(vInnerArray)) Begin
Get Create (RefClass(cComChilkatJsonArray)) To hoInnerArray
Set pvComObject Of hoInnerArray To vInnerArray
End
// The first item in the innerArray is a string
Get ComStringAt Of hoInnerArray 0 To sTemp1
Showln sTemp1 ":"
Get ComSize Of hoInnerArray To iNumInnerItems
For j From 1 To (iNumInnerItems - 1)
Get ComIntAt Of hoInnerArray j To iTemp1
Showln " " iTemp1
Loop
Send Destroy of hoInnerArray
Loop
Send Destroy of hoOuterArray
End_Procedure