Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Insert JSON Array into another JSON Object
See more JSON Examples
Demonstrates how to insert a JSON array into a JSON object.Chilkat Pascal (Lazarus/Delphi) Downloads
program ChilkatDemo;
// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
SysUtils,
CkDllLoader,
Chilkat.JsonArray,
Chilkat.JsonObject;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
jsonA: TJsonObject;
jsonB: TJsonObject;
jsonUsersDest: TJsonArray;
jsonUsersSrc: TJsonArray;
begin
// Imagine we have two separate JSON objects.
jsonA := TJsonObject.Create;
jsonA.UpdateString('ciphertext','encryptedData');
jsonA.UpdateInt('status',200);
jsonA.UpdateString('error','errorMsg');
jsonA.EmitCompact := False;
WriteLn(jsonA.Emit());
// jsonA contains:
// {
// "ciphertext": "encryptedData",
// "status": 200,
// "error": "errorMsg"
// }
jsonB := TJsonObject.Create;
jsonB.UpdateString('users[0].role','Surgeon');
jsonB.UpdateNewArray('users[0].sub_roles');
jsonB.UpdateBool('users[0].viewable_for_sharing',True);
jsonB.UpdateInt('users[0].eula_create_date',123);
jsonB.UpdateString('users[1].role','Support');
jsonB.UpdateString('users[1].sub_roles[0]','Tech');
jsonB.UpdateString('users[1].sub_roles[1]','Service');
jsonB.UpdateBool('users[1].viewable_for_sharing',True);
jsonB.UpdateInt('users[1].eula_create_date',123);
jsonB.EmitCompact := False;
WriteLn(jsonB.Emit());
// jsonB contains:
// {
// "users": [
// {
// "role": "Surgeon",
// "sub_roles": [],
// "viewable_for_sharing": true,
// "eula_create_date": 1649108922482
// },
// {
// "role": "Support",
// "sub_roles": [
// "Tech",
// "Service"
// ],
// "viewable_for_sharing": true,
// "eula_create_date": 1649108951523
// }
// ]
// }
// Let's say we want to insert jsonB into jsonA to get this:
// {
// "ciphertext": "encryptedData",
// "status": 200,
// "error": "errorMsg",
// "users": [
// {
// "role": "Surgeon",
// "sub_roles": [],
// "viewable_for_sharing": true,
// "eula_create_date": 1649108922482
// },
// {
// "role": "Support",
// "sub_roles": [
// "Tech",
// "Service"
// ],
// "viewable_for_sharing": true,
// "eula_create_date": 1649108951523
// }
// ]
// }
// The destination is the empty "users" array, the source is the populated "users" array in jsonB.
jsonUsersDest := TJsonArray.Create;
jsonA.AppendArray2('users',jsonUsersDest);
jsonUsersSrc := TJsonArray.Create;
jsonB.ArrayOf2('users',jsonUsersSrc);
// Copy the array items from source to dest
jsonUsersDest.AppendArrayItems(jsonUsersSrc);
WriteLn(jsonA.Emit());
// The end result is this:
// {
// "ciphertext": "encryptedData",
// "status": 200,
// "error": "errorMsg",
// "users": [
// {
// "role": "Surgeon",
// "sub_roles": [
// ],
// "viewable_for_sharing": true,
// "eula_create_date": 123
// },
// {
// "role": "Support",
// "sub_roles": [
// "Tech",
// "Service"
// ],
// "viewable_for_sharing": true,
// "eula_create_date": 123
// }
// ]
// }
jsonA.Free;
jsonB.Free;
jsonUsersDest.Free;
jsonUsersSrc.Free;
end;
// ---------------------------------------------------------------------------
begin
try
RunDemo;
except
on E: Exception do
WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
end;
WriteLn;
{$IFDEF MSWINDOWS}
WriteLn('Press Enter to exit...');
ReadLn;
{$ENDIF}
end.