Tcl
Tcl
Merge SP-API JSON Order Arrays
See more Amazon SP-API Examples
Demonstrates how to merge JSON arrays for the case of Amazon SP-API orders.Chilkat Tcl Downloads
load ./chilkat.dll
set success 0
# Batch 1 File
set a1 "{\"payload\": {\"Orders\": [{\"AmazonOrderId\": \"1\",\"OrderStatus\": \"Unshipped\"},{\"AmazonOrderId\": \"2\",\"OrderStatus\": \"Unshipped\"}]}"
# Batch 2 File
set a2 "{\"payload\": {\"Orders\": [{\"AmazonOrderId\": \"3\",\"OrderStatus\": \"Unshipped\"},{\"AmazonOrderId\": \"4\",\"OrderStatus\": \"Unshipped\"}]}"
# Required Merged File
# {"payload": {"Orders": [{"AmazonOrderId": "1","OrderStatus": "Unshipped"},{"AmazonOrderId": "2","OrderStatus": "Unshipped"},{"AmazonOrderId": "3","OrderStatus": "Unshipped"},{"AmazonOrderId": "4","OrderStatus": "Unshipped"}]}
set success 1
set json1 [new_CkJsonObject]
CkJsonObject_Load $json1 $a1
set json2 [new_CkJsonObject]
CkJsonObject_Load $json2 $a2
# We're going to add the order records from json2 to json1.
# jarr1 is a CkJsonArray
set jarr1 [CkJsonObject_ArrayOf $json1 "payload.Orders"]
# jarr2 is a CkJsonArray
set jarr2 [CkJsonObject_ArrayOf $json2 "payload.Orders"]
set i 0
set numOrders [CkJsonArray_get_Size $jarr2]
while {$i < $numOrders} {
# jOrder is a CkJsonObject
set jOrder [CkJsonArray_ObjectAt $jarr2 $i]
# Assuming non-null return...
CkJsonArray_AddObjectCopyAt $jarr1 -1 $jOrder
set i [expr $i + 1]
}
# Show the merged JSON.
CkJsonObject_put_EmitCompact $json1 0
puts [CkJsonObject_emit $json1]
# Result:
# {
# "payload": {
# "Orders": [
# {
# "AmazonOrderId": "1",
# "OrderStatus": "Unshipped"
# },
# {
# "AmazonOrderId": "2",
# "OrderStatus": "Unshipped"
# },
# {
# "AmazonOrderId": "3",
# "OrderStatus": "Unshipped"
# },
# {
# "AmazonOrderId": "4",
# "OrderStatus": "Unshipped"
# }
# ]
# }
# }
delete_CkJsonObject $json1
delete_CkJsonObject $json2