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

Iterate over JSON Array containing JSON Objects

See more JSON Examples

Demonstrates how to load a JSON array and iterate over the JSON objects.

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.StringBuilder,
  Chilkat.JsonObject;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  sbJsonArray: TStringBuilder;
  arr: TJsonArray;
  tagId: Integer;
  tagDescription: string;
  isPublic: Boolean;
  i: Integer;
  count: Integer;
  obj: TJsonObject;

begin
  success := False;

  //  Loads the following JSON array and iterates over the objects:
  //  
  //  [
  //  {"tagId":95,"tagDescription":"hola 1","isPublic":true},
  //  {"tagId":98,"tagDescription":"hola 1","isPublic":true},
  //  {"tagId":101,"tagDescription":"hola 1","isPublic":true},
  //  {"tagId":104,"tagDescription":"hola 1","isPublic":true},
  //  {"tagId":107,"tagDescription":"hola 1","isPublic":true},
  //  {"tagId":110,"tagDescription":"hola 1","isPublic":true},
  //  {"tagId":113,"tagDescription":"hola 1","isPublic":true},
  //  {"tagId":114,"tagDescription":"hola 2","isPublic":true},
  //  {"tagId":111,"tagDescription":"hola 2","isPublic":true},
  //  {"tagId":108,"tagDescription":"hola 2","isPublic":true},
  //  {"tagId":105,"tagDescription":"hola 2","isPublic":true},
  //  {"tagId":102,"tagDescription":"hola 2","isPublic":true},
  //  {"tagId":99,"tagDescription":"hola 2","isPublic":true},
  //  {"tagId":96,"tagDescription":"hola 2","isPublic":true},
  //  {"tagId":97,"tagDescription":"hola 3","isPublic":true},
  //  {"tagId":100,"tagDescription":"hola 3","isPublic":true},
  //  {"tagId":103,"tagDescription":"hola 3","isPublic":true},
  //  {"tagId":106,"tagDescription":"hola 3","isPublic":true},
  //  {"tagId":109,"tagDescription":"hola 3","isPublic":true},
  //  {"tagId":112,"tagDescription":"hola 3","isPublic":true},
  //  {"tagId":115,"tagDescription":"hola 3","isPublic":true},
  //  {"tagId":93,"tagDescription":"new tag","isPublic":true},
  //  {"tagId":94,"tagDescription":"new tag","isPublic":true},
  //  {"tagId":89,"tagDescription":"tag 1","isPublic":true},
  //  {"tagId":90,"tagDescription":"tag 2","isPublic":true},
  //  {"tagId":91,"tagDescription":"tag private 1","isPublic":false},
  //  {"tagId":92,"tagDescription":"tag private 2","isPublic":false}
  //  ]

  //  Load a file containing the above JSON..
  sbJsonArray := TStringBuilder.Create;
  success := sbJsonArray.LoadFile('qa_data/json/arraySample.json','utf-8');

  arr := TJsonArray.Create;
  success := arr.LoadSb(sbJsonArray);

  i := 0;
  count := arr.Size;

  while i < count do
    begin
      obj := arr.ObjectAt(i);
      tagId := obj.IntOf('tagId');
      tagDescription := obj.StringOf('tagDescription');
      isPublic := obj.BoolOf('isPublic');

      WriteLn('tagId: ' + tagId);
      WriteLn('tagDescription: ' + tagDescription);
      WriteLn('isPublic: ' + isPublic);
      WriteLn('--');

      obj.Free;
      i := i + 1;
    end;



  sbJsonArray.Free;
  arr.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.