Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

JSON: Array of Objects

See more JSON Examples

Here we have a JSON object that contains an array, where each element in the array is a JSON object. This example demonstrates how to access the objects contained within an array.
{ 
  "employees":[
    {"firstName":"John", "lastName":"Doe"},
    {"firstName":"Anna", "lastName":"Smith"},
    {"firstName":"Peter","lastName":"Jones"}
  ]
}

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
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
  success: Boolean;
  json: TJsonObject;
  jsonStr: string;
  employees: TJsonArray;
  numEmployees: Integer;
  i: Integer;
  empObj: TJsonObject;

begin
  success := False;

  json := TJsonObject.Create;

  //  This is the above JSON with whitespace chars removed (SPACE, TAB, CR, and LF chars).
  //  The presence of whitespace chars for pretty-printing makes no difference to the Load
  //  method. 
  jsonStr := '{"employees":[{"firstName":"John", "lastName":"Doe"},{"firstName":"Anna", "lastName":"Smith"},{"firstName":"Peter","lastName":"Jones"}]}';

  success := json.Load(jsonStr);
  if (success <> True) then
    begin
      WriteLn(json.LastErrorText);
      Exit;
    end;

  //  Get the "employees" array.
  employees := json.ArrayOf('employees');
  if (json.LastMethodSuccess = False) then
    begin
      WriteLn('employees member not found.');
      Exit;
    end;

  //  Iterate over each employee, getting the JSON object at each index.
  numEmployees := employees.Size;
  i := 0;
  while i < numEmployees do
    begin

      empObj := employees.ObjectAt(i);

      WriteLn('employee[' + i + '] = ' + empObj.StringOf('firstName') + ' ' + empObj.StringOf('lastName'));
      empObj.Free;

      i := i + 1;
    end;

  employees.Free;


  json.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.