Sample code for 30+ languages & platforms
DataFlex

JSON Copy Objects

See more JSON Examples

Copy objects from one JSON document to another.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Handle hoJson1
    Boolean iSuccess
    Handle hoJson2
    Integer i
    Integer iNumMembers
    Variant vJsonObj
    Handle hoJsonObj
    String sTemp1

    Get Create (RefClass(cComChilkatJsonObject)) To hoJson1
    If (Not(IsComObjectCreated(hoJson1))) Begin
        Send CreateComObject of hoJson1
    End
    Get ComUpdateString Of hoJson1 "ID1.cn" "Name" To iSuccess
    Get ComUpdateString Of hoJson1 "ID1.objectGUID" "GUID" To iSuccess
    Get ComUpdateString Of hoJson1 "ID2.cn" "Name" To iSuccess
    Get ComUpdateString Of hoJson1 "ID2.objectGUID" "GUID" To iSuccess

    Set ComEmitCompact Of hoJson1 To False
    Get ComEmit Of hoJson1 To sTemp1
    Showln sTemp1

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

    Get Create (RefClass(cComChilkatJsonObject)) To hoJson2
    If (Not(IsComObjectCreated(hoJson2))) Begin
        Send CreateComObject of hoJson2
    End
    Get ComUpdateString Of hoJson2 "Name1.ID1.cn" "Name" To iSuccess
    Get ComUpdateString Of hoJson2 "Name1.ID1.objectGUID" "GUID" To iSuccess
    Get ComUpdateString Of hoJson2 "Name1.ID2.cn" "Name" To iSuccess
    Get ComUpdateString Of hoJson2 "Name1.ID2.objectGUID" "GUID" To iSuccess
    Get ComUpdateString Of hoJson2 "Name2.ID3.cn" "Name" To iSuccess
    Get ComUpdateString Of hoJson2 "Name2.ID3.objectGUID" "GUID" To iSuccess

    Set ComEmitCompact Of hoJson2 To False
    Get ComEmit Of hoJson2 To sTemp1
    Showln sTemp1

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

    // Copy Name1, Name2 into json1

    Move 0 To i
    Get ComSize Of hoJson2 To iNumMembers
    While (i < iNumMembers)
        Get ComObjectAt Of hoJson2 i To vJsonObj
        If (IsComObject(vJsonObj)) Begin
            Get Create (RefClass(cComChilkatJsonObject)) To hoJsonObj
            Set pvComObject Of hoJsonObj To vJsonObj
        End
        Get ComNameAt Of hoJson2 i To sTemp1
        Get ComAppendObjectCopy Of hoJson1 sTemp1 vJsonObj To iSuccess
        Move (i + 1) To i
    Loop

    // Now see what json1 contains:
    Get ComEmit Of hoJson1 To sTemp1
    Showln sTemp1

    // {
    //   "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"
    //     }
    //   }
    // }


End_Procedure