Tcl
Tcl
Find and Delete Object from JSON Array
See more JSON Examples
Demonstrates how to find an delete an object from a JSON array of objects.Chilkat Tcl Downloads
load ./chilkat.dll
set success 0
# This example will delete the "Pasta" category object from Menu B.
# {
# "menus": [
# {
# "name": "Menu A",
# "categories": [
# {
# "name": "Kebabs",
# "description": "blah blah blah"
# },
# {
# "name": "Burgers",
# "description": "blah blah blah"
# },
# {
# "name": "Pasta",
# "description": "blah blah blah"
# },
# {
# "name": "Appetizers",
# "description": "blah blah blah"
# }
# ]
# },
# {
# "name": "Menu B",
# "categories": [
# {
# "name": "Kebabs",
# "description": "blah blah blah"
# },
# {
# "name": "Burgers",
# "description": "blah blah blah"
# },
# {
# "name": "Pasta",
# "description": "blah blah blah"
# },
# {
# "name": "Appetizers",
# "description": "blah blah blah"
# }
# ]
# }
# ]
# }
set json [new_CkJsonObject]
set success [CkJsonObject_LoadFile $json "qa_data/json/menus.json"]
if {$success == 0} then {
puts [CkJsonObject_lastErrorText $json]
delete_CkJsonObject $json
exit
}
# Find Menu B.
# menu is a CkJsonObject
set menu [CkJsonObject_FindRecord $json "menus" "name" "Menu B" 1]
# assume menu is found..
# Get the categories array, and then find the index of the "Pasta" menu category.
# catArr is a CkJsonArray
set catArr [CkJsonObject_ArrayOf $menu "categories"]
# Assume it is found..
# Find the object where the name of the JSON member is "name", and the value is "Pasta"
set index [CkJsonArray_FindObject $catArr "name" "Pasta" 1]
if {$index < 0} then {
puts "Pasta not found."
} else {
# Delete the "Pasta" category record from Menu B
set success [CkJsonArray_DeleteAt $catArr $index]
# Assume OK..
}
# Examine the JSON to see if it worked as expected..
CkJsonObject_put_EmitCompact $json 0
puts [CkJsonObject_emit $json]
delete_CkJsonArray $catArr
delete_CkJsonObject $menu
delete_CkJsonObject $json