(Tcl) Iterate JSON where Member Names are Data Values
Demonstrates how to parse JSON where member names are not keywords, but instead are data values.
load ./chilkat.dll
set json [new_CkJsonObject]
set success [CkJsonObject_LoadFile $json "qa_data/json/valuesAsNames.json"]
# Imagine we have JSON such as the following:
# {
# "1680": {
# "entity_id": "1680",
# "type_id": "simple",
# "sku": "123"
# },
# "1701": {
# "entity_id": "1701",
# "type_id": "simple",
# "sku": "456"
# }
# }
#
# This presents a parsing problem because the member names, such as "1680"
# are not keywords. Instead they are data values. We don't know what they
# may be in advance.
# To solve, we iterate over the members, get the name of each, ...
set numMembers [CkJsonObject_get_Size $json]
for {set i 0} {$i <= [expr $numMembers - 1]} {incr i} {
set name [CkJsonObject_nameAt $json $i]
puts "$name:"
# jRecord is a CkJsonObject
set jRecord [CkJsonObject_ObjectAt $json $i]
puts "entity_id: [CkJsonObject_stringOf $jRecord entity_id]"
puts "type_id: [CkJsonObject_stringOf $jRecord type_id]"
puts "sku: [CkJsonObject_stringOf $jRecord sku]"
delete_CkJsonObject $jRecord
}
delete_CkJsonObject $json
|