Tcl
Tcl
JSON: Access Array Values
See more JSON Examples
Demonstrates how to access values in a JSON array.Chilkat Tcl Downloads
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