Sample code for 30+ languages & platforms
Tcl

JSON: Access Array Values

See more JSON Examples

Demonstrates how to access values in a JSON array.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

set json [new_CkJsonObject]

set jsonStr "{ \"id\": 1, \"name\": \"A green door\", \"tags\": [\"home\", 22, \"green\"], \"price\": 125 }"

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

# Get the "tags" array, which contains "home", 22, "green"
# tagsArray is a CkJsonArray
set tagsArray [CkJsonObject_ArrayOf $json "tags"]
if {[CkJsonObject_get_LastMethodSuccess $json] == 0} then {
    puts "tags member not found."
    delete_CkJsonObject $json
    exit
}

# Get the value at each array index. 
# Output will be:
# [0] = home
# [0] as integer = 0
# [1] = 22
# [1] as integer = 22
# [2] = green
# [2] as integer = 0

set arraySize [CkJsonArray_get_Size $tagsArray]

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

    set sValue [CkJsonArray_stringAt $tagsArray $i]

    puts "{[}$i] = $sValue"

    set iValue [CkJsonArray_IntAt $tagsArray $i]
    puts "{[}$i] as integer = $iValue"

}

delete_CkJsonArray $tagsArray

# Note: The StringAt method returns the value as a string regardless of the type.

# The IntAt method returns the value as an integer.  If the value does not convert to 
# an integer, then 0 is returned

delete_CkJsonObject $json