Sample code for 30+ languages & platforms
DataFlex

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

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    String sA1
    String sA2
    Handle hoJson1
    Handle hoJson2
    Variant vJarr1
    Handle hoJarr1
    Variant vJarr2
    Handle hoJarr2
    Integer i
    Integer iNumOrders
    Variant vJOrder
    Handle hoJOrder
    String sTemp1

    Move False To iSuccess

    // Batch 1 File
    Move '{"payload": {"Orders": [{"AmazonOrderId": "1","OrderStatus": "Unshipped"},{"AmazonOrderId": "2","OrderStatus": "Unshipped"}]}' To sA1

    // Batch 2 File
    Move '{"payload": {"Orders": [{"AmazonOrderId": "3","OrderStatus": "Unshipped"},{"AmazonOrderId": "4","OrderStatus": "Unshipped"}]}' To sA2

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

    Move True To iSuccess
    Get Create (RefClass(cComChilkatJsonObject)) To hoJson1
    If (Not(IsComObjectCreated(hoJson1))) Begin
        Send CreateComObject of hoJson1
    End
    Get ComLoad Of hoJson1 sA1 To iSuccess

    Get Create (RefClass(cComChilkatJsonObject)) To hoJson2
    If (Not(IsComObjectCreated(hoJson2))) Begin
        Send CreateComObject of hoJson2
    End
    Get ComLoad Of hoJson2 sA2 To iSuccess

    // We're going to add the order records from json2 to json1.
    Get ComArrayOf Of hoJson1 "payload.Orders" To vJarr1
    If (IsComObject(vJarr1)) Begin
        Get Create (RefClass(cComChilkatJsonArray)) To hoJarr1
        Set pvComObject Of hoJarr1 To vJarr1
    End
    Get ComArrayOf Of hoJson2 "payload.Orders" To vJarr2
    If (IsComObject(vJarr2)) Begin
        Get Create (RefClass(cComChilkatJsonArray)) To hoJarr2
        Set pvComObject Of hoJarr2 To vJarr2
    End

    Move 0 To i
    Get ComSize Of hoJarr2 To iNumOrders
    While (i < iNumOrders)
        Get ComObjectAt Of hoJarr2 i To vJOrder
        If (IsComObject(vJOrder)) Begin
            Get Create (RefClass(cComChilkatJsonObject)) To hoJOrder
            Set pvComObject Of hoJOrder To vJOrder
        End
        // Assuming non-null return...
        Get ComAddObjectCopyAt Of hoJarr1 -1 vJOrder To iSuccess
        Move (i + 1) To i
    Loop

    // Show the merged JSON.
    Set ComEmitCompact Of hoJson1 To False
    Get ComEmit Of hoJson1 To sTemp1
    Showln sTemp1

    // Result:

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


End_Procedure