Sample code for 30+ languages & platforms
PureBasic

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

PureBasic
IncludeFile "CkJsonArray.pb"
IncludeFile "CkJsonObject.pb"

Procedure ChilkatExample()

    success.i = 0

    ; Batch 1 File
    a1.s = "{" + Chr(34) + "payload" + Chr(34) + ": {" + Chr(34) + "Orders" + Chr(34) + ": [{" + Chr(34) + "AmazonOrderId" + Chr(34) + ": " + Chr(34) + "1" + Chr(34) + "," + Chr(34) + "OrderStatus" + Chr(34) + ": " + Chr(34) + "Unshipped" + Chr(34) + "},{" + Chr(34) + "AmazonOrderId" + Chr(34) + ": " + Chr(34) + "2" + Chr(34) + "," + Chr(34) + "OrderStatus" + Chr(34) + ": " + Chr(34) + "Unshipped" + Chr(34) + "}]}"

    ; Batch 2 File
    a2.s = "{" + Chr(34) + "payload" + Chr(34) + ": {" + Chr(34) + "Orders" + Chr(34) + ": [{" + Chr(34) + "AmazonOrderId" + Chr(34) + ": " + Chr(34) + "3" + Chr(34) + "," + Chr(34) + "OrderStatus" + Chr(34) + ": " + Chr(34) + "Unshipped" + Chr(34) + "},{" + Chr(34) + "AmazonOrderId" + Chr(34) + ": " + Chr(34) + "4" + Chr(34) + "," + Chr(34) + "OrderStatus" + Chr(34) + ": " + Chr(34) + "Unshipped" + Chr(34) + "}]}"

    ; Required Merged File
    ; {"payload": {"Orders": [{"AmazonOrderId": "1","OrderStatus": "Unshipped"},{"AmazonOrderId": "2","OrderStatus": "Unshipped"},{"AmazonOrderId": "3","OrderStatus": "Unshipped"},{"AmazonOrderId": "4","OrderStatus": "Unshipped"}]}

    success = 1
    json1.i = CkJsonObject::ckCreate()
    If json1.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckLoad(json1,a1)

    json2.i = CkJsonObject::ckCreate()
    If json2.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckLoad(json2,a2)

    ; We're going to add the order records from json2 to json1.
    jarr1.i = CkJsonObject::ckArrayOf(json1,"payload.Orders")
    jarr2.i = CkJsonObject::ckArrayOf(json2,"payload.Orders")

    i.i = 0
    numOrders.i = CkJsonArray::ckSize(jarr2)
    While (i < numOrders)
        jOrder.i = CkJsonArray::ckObjectAt(jarr2,i)
        ; Assuming non-null return...
        CkJsonArray::ckAddObjectCopyAt(jarr1,-1,jOrder)
        i = i + 1
    Wend

    ; Show the merged JSON.
    CkJsonObject::setCkEmitCompact(json1, 0)
    Debug CkJsonObject::ckEmit(json1)

    ; Result:

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


    CkJsonObject::ckDispose(json1)
    CkJsonObject::ckDispose(json2)


    ProcedureReturn
EndProcedure