Sample code for 30+ languages & platforms
Lua

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 Lua Downloads

Lua
local chilkat = require("chilkat")

-- Batch 1 File
local a1 = "{\"payload\": {\"Orders\": [{\"AmazonOrderId\": \"1\",\"OrderStatus\": \"Unshipped\"},{\"AmazonOrderId\": \"2\",\"OrderStatus\": \"Unshipped\"}]}"

-- Batch 2 File
local 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"}]}

local success = true
local json1 = chilkat.JsonObject.new()
json1:load(a1)

local json2 = chilkat.JsonObject.new()
json2:load(a2)

-- We're going to add the order records from json2 to json1.
local jarr1 = json1:array_of("payload.Orders")
local jarr2 = json2:array_of("payload.Orders")

local i = 0
local numOrders = jarr2.size
while i < numOrders do
    local jOrder = jarr2:object_at(i)
    -- Assuming non-null return...
    jarr1:add_object_copy_at(-1, jOrder)
    i = i + 1
end

-- Show the merged JSON.
json1.emit_compact = false
print(json1:emit())

-- Result:

-- {
--   "payload": {
--     "Orders": [
--       {
--         "AmazonOrderId": "1",
--         "OrderStatus": "Unshipped"
--       },
--       {
--         "AmazonOrderId": "2",
--         "OrderStatus": "Unshipped"
--       },
--       {
--         "AmazonOrderId": "3",
--         "OrderStatus": "Unshipped"
--       },
--       {
--         "AmazonOrderId": "4",
--         "OrderStatus": "Unshipped"
--       }
--     ]
--   }
-- }