Sample code for 30+ languages & platforms
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

PureBasic
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