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

Understanding JSON Array vs JSON Object

See more JSON Examples

This example explains the difference between a JSON Array and a JSON Object. A JSON Array begins with "[" and ends with "]", whereas a JSON Object begins with "{" and ends with "}".

Elements contained in a JSON array are accessed by index, whereas elements in a JSON object are typically accessed by name (but can also be accessed by index).

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;
  strJsonArray: string;
  jsonA: TJsonArray;
  strJsonObj: string;
  jsonO: TJsonObject;

begin
  success := False;

  //  A JSON array should be loaded into a Chilkat JSON array,
  //  whereas a JSON object should be loaded into a Chilkat JSON object.

  //  A JSON array may contain objects, and a JSON object may contains arrays, but
  //  it is the top-level (outermost) element that defines whether the JSON
  //  document is an array or an object.
  //  An array begins and ends with "[" ... "]"
  //  An object begins and ends with "{" ... "}"

  //  For example, an array containing 2 objects:
  strJsonArray := '[ { "name": "Bill" }, { "name": "Ted" } ]';

  //  Load it into a JSON array.
  jsonA := TJsonArray.Create;
  success := jsonA.Load(strJsonArray);
  WriteLn('number of array elements: ' + jsonA.Size);

  //  This is an object containing an array:
  strJsonObj := '{ "characters": [ "Bill", "Ted" ] }';

  //  Load it into a JSON object.
  jsonO := TJsonObject.Create;
  success := jsonO.Load(strJsonObj);
  WriteLn('number of object members: ' + jsonO.Size);


  jsonA.Free;
  jsonO.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.