Sample code for 30+ languages & platforms
Delphi DLL

JSON Copy Objects

See more JSON Examples

Copy objects from one JSON document to another.

Chilkat Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, JsonObject;

...

procedure TForm1.Button1Click(Sender: TObject);
var
json1: HCkJsonObject;
json2: HCkJsonObject;
i: Integer;
numMembers: Integer;
jsonObj: HCkJsonObject;

begin
json1 := CkJsonObject_Create();
CkJsonObject_UpdateString(json1,'ID1.cn','Name');
CkJsonObject_UpdateString(json1,'ID1.objectGUID','GUID');
CkJsonObject_UpdateString(json1,'ID2.cn','Name');
CkJsonObject_UpdateString(json1,'ID2.objectGUID','GUID');

CkJsonObject_putEmitCompact(json1,False);
Memo1.Lines.Add(CkJsonObject__emit(json1));

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

json2 := CkJsonObject_Create();
CkJsonObject_UpdateString(json2,'Name1.ID1.cn','Name');
CkJsonObject_UpdateString(json2,'Name1.ID1.objectGUID','GUID');
CkJsonObject_UpdateString(json2,'Name1.ID2.cn','Name');
CkJsonObject_UpdateString(json2,'Name1.ID2.objectGUID','GUID');
CkJsonObject_UpdateString(json2,'Name2.ID3.cn','Name');
CkJsonObject_UpdateString(json2,'Name2.ID3.objectGUID','GUID');

CkJsonObject_putEmitCompact(json2,False);
Memo1.Lines.Add(CkJsonObject__emit(json2));

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

// Copy Name1, Name2 into json1

i := 0;
numMembers := CkJsonObject_getSize(json2);
while i < numMembers do
  begin
    jsonObj := CkJsonObject_ObjectAt(json2,i);
    CkJsonObject_AppendObjectCopy(json1,CkJsonObject__nameAt(json2,i),jsonObj);
    i := i + 1;
  end;

// Now see what json1 contains:
Memo1.Lines.Add(CkJsonObject__emit(json1));

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

CkJsonObject_Dispose(json1);
CkJsonObject_Dispose(json2);

end;