Sample code for 30+ languages & platforms
Tcl

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 Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

set json [new_CkJsonObject]

# 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. 
set jsonStr "{ \"numbers\" : [ [\"even\", 2, 4, 6, 8], [\"prime\", 2, 3, 5, 7, 11, 13] ] }"

set success [CkJsonObject_Load $json $jsonStr]
if {$success != 1} then {
    puts [CkJsonObject_lastErrorText $json]
    delete_CkJsonObject $json
    exit
}

# Get the value of the "numbers" object, which is an array that contains JSON arrays.
# outerArray is a CkJsonArray
set outerArray [CkJsonObject_ArrayOf $json "numbers"]
if {[CkJsonObject_get_LastMethodSuccess $json] == 0} then {
    puts "numbers array not found."
    delete_CkJsonObject $json
    exit
}

set numArrays [CkJsonArray_get_Size $outerArray]

for {set i 0} {$i <= [expr $numArrays - 1]} {incr i} {

    # innerArray is a CkJsonArray
    set innerArray [CkJsonArray_ArrayAt $outerArray $i]

    # The first item in the innerArray is a string
    puts [CkJsonArray_stringAt $innerArray 0]:

    set numInnerItems [CkJsonArray_get_Size $innerArray]

    for {set j 1} {$j <= [expr $numInnerItems - 1]} {incr j} {

        puts "  [CkJsonArray_IntAt $innerArray $j]"

    }

    delete_CkJsonArray $innerArray

}

delete_CkJsonArray $outerArray


delete_CkJsonObject $json