Sample code for 30+ languages & platforms
Tcl

JSON Copy Objects

See more JSON Examples

Copy objects from one JSON document to another.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set json1 [new_CkJsonObject]

CkJsonObject_UpdateString $json1 "ID1.cn" "Name"
CkJsonObject_UpdateString $json1 "ID1.objectGUID" "GUID"
CkJsonObject_UpdateString $json1 "ID2.cn" "Name"
CkJsonObject_UpdateString $json1 "ID2.objectGUID" "GUID"

CkJsonObject_put_EmitCompact $json1 0
puts [CkJsonObject_emit $json1]

# json1 contains:
# {
#   "ID1": {
#     "cn": "Name",
#     "objectGUID": "GUID"
#   },
#   "ID2": {
#     "cn": "Name",
#     "objectGUID": "GUID"
#   }
# }

set json2 [new_CkJsonObject]

CkJsonObject_UpdateString $json2 "Name1.ID1.cn" "Name"
CkJsonObject_UpdateString $json2 "Name1.ID1.objectGUID" "GUID"
CkJsonObject_UpdateString $json2 "Name1.ID2.cn" "Name"
CkJsonObject_UpdateString $json2 "Name1.ID2.objectGUID" "GUID"
CkJsonObject_UpdateString $json2 "Name2.ID3.cn" "Name"
CkJsonObject_UpdateString $json2 "Name2.ID3.objectGUID" "GUID"

CkJsonObject_put_EmitCompact $json2 0
puts [CkJsonObject_emit $json2]

# {
#   "Name1": {
#     "ID1": {
#       "cn": "Name",
#       "objectGUID": "GUID"
#     },
#     "ID2": {
#       "cn": "Name",
#       "objectGUID": "GUID"
#     }
#   },
#   "Name2": {
#     "ID3": {
#       "cn": "Name",
#       "objectGUID": "GUID"
#     }
#   }
# }

# Copy Name1, Name2 into json1

set i 0
set numMembers [CkJsonObject_get_Size $json2]
while {$i < $numMembers} {
    # jsonObj is a CkJsonObject
    set jsonObj [CkJsonObject_ObjectAt $json2 $i]
    CkJsonObject_AppendObjectCopy $json1 [CkJsonObject_nameAt $json2 $i] $jsonObj
    set i [expr $i + 1]
}

# Now see what json1 contains:
puts [CkJsonObject_emit $json1]

# {
#   "ID1": {
#     "cn": "Name",
#     "objectGUID": "GUID"
#   },
#   "ID2": {
#     "cn": "Name",
#     "objectGUID": "GUID"
#   },
#   "Name1": {
#     "ID1": {
#       "cn": "Name",
#       "objectGUID": "GUID"
#     },
#     "ID2": {
#       "cn": "Name",
#       "objectGUID": "GUID"
#     }
#   },
#   "Name2": {
#     "ID3": {
#       "cn": "Name",
#       "objectGUID": "GUID"
#     }
#   }
# }

delete_CkJsonObject $json1
delete_CkJsonObject $json2