Sample code for 30+ languages & platforms
Delphi DLL

Loading and Parsing a JSON Array

See more JSON Examples

A JSON array is JSON that begins with "[" and ends with "]". For example, this is a JSON array that contains 3 JSON objects.
[{"name":"jack"},{"name":"john"},{"name":"joe"}]
A JSON object, however, is JSON that begins with "{" and ends with "}". For example, this JSON is an object that contains an array.
{"pets":[{"name":"jack"},{"name":"john"},{"name":"joe"}]}
This example shows how loading a JSON array is different than loading a JSON object.

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, JsonArray, JsonObject;

...

procedure TForm1.Button1Click(Sender: TObject);
var
strJsonArray: PWideChar;
strJsonObject: PWideChar;
jsonArray: HCkJsonArray;
i: Integer;
jsonObj: HCkJsonObject;
jsonObject: HCkJsonObject;
numPets: Integer;

begin
strJsonArray := '[{"name":"jack"},{"name":"john"},{"name":"joe"}]';

strJsonObject := '{"pets":[{"name":"jack"},{"name":"john"},{"name":"joe"}]}';

// A JSON array must be loaded using JsonArray:
jsonArray := CkJsonArray_Create();
CkJsonArray_Load(jsonArray,strJsonArray);

// Examine the values:
i := 0;
while i < CkJsonArray_getSize(jsonArray) do
  begin
    jsonObj := CkJsonArray_ObjectAt(jsonArray,i);
    Memo1.Lines.Add(IntToStr(i) + ': ' + CkJsonObject__stringOf(jsonObj,'name'));
    CkJsonObject_Dispose(jsonObj);
    i := i + 1;
  end;

// Output is:

// 	0: jack
// 	1: john
// 	2: joe

// A JSON object must be loaded using JsonObject
jsonObject := CkJsonObject_Create();
CkJsonObject_Load(jsonObject,strJsonObject);

// Examine the values:
i := 0;
numPets := CkJsonObject_SizeOfArray(jsonObject,'pets');
while i < numPets do
  begin
    CkJsonObject_putI(jsonObject,i);
    Memo1.Lines.Add(IntToStr(i) + ': ' + CkJsonObject__stringOf(jsonObject,'pets[i].name'));
    i := i + 1;
  end;

// Output is:

// 	0: jack
// 	1: john
// 	2: joe

CkJsonArray_Dispose(jsonArray);
CkJsonObject_Dispose(jsonObject);

end;