PureBasic
PureBasic
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 PureBasic Downloads
IncludeFile "CkJsonArray.pb"
IncludeFile "CkJsonObject.pb"
Procedure ChilkatExample()
success.i = 0
json.i = CkJsonObject::ckCreate()
If json.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; 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.
jsonStr.s = "{ " + Chr(34) + "numbers" + Chr(34) + " : [ [" + Chr(34) + "even" + Chr(34) + ", 2, 4, 6, 8], [" + Chr(34) + "prime" + Chr(34) + ", 2, 3, 5, 7, 11, 13] ] }"
success = CkJsonObject::ckLoad(json,jsonStr)
If success <> 1
Debug CkJsonObject::ckLastErrorText(json)
CkJsonObject::ckDispose(json)
ProcedureReturn
EndIf
; Get the value of the "numbers" object, which is an array that contains JSON arrays.
outerArray.i = CkJsonObject::ckArrayOf(json,"numbers")
If CkJsonObject::ckLastMethodSuccess(json) = 0
Debug "numbers array not found."
CkJsonObject::ckDispose(json)
ProcedureReturn
EndIf
numArrays.i = CkJsonArray::ckSize(outerArray)
i.i
For i = 0 To numArrays - 1
innerArray.i = CkJsonArray::ckArrayAt(outerArray,i)
; The first item in the innerArray is a string
Debug CkJsonArray::ckStringAt(innerArray,0) + ":"
numInnerItems.i = CkJsonArray::ckSize(innerArray)
j.i
For j = 1 To numInnerItems - 1
Debug " " + Str(CkJsonArray::ckIntAt(innerArray,j))
Next
CkJsonArray::ckDispose(innerArray)
Next
CkJsonArray::ckDispose(outerArray)
CkJsonObject::ckDispose(json)
ProcedureReturn
EndProcedure