Sample code for 30+ languages & platforms
Delphi DLL

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

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
sbJsonArray: HCkStringBuilder;
arr: HCkJsonArray;
tagId: Integer;
tagDescription: PWideChar;
isPublic: Boolean;
i: Integer;
count: Integer;
obj: HCkJsonObject;

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 := CkStringBuilder_Create();
success := CkStringBuilder_LoadFile(sbJsonArray,'qa_data/json/arraySample.json','utf-8');

arr := CkJsonArray_Create();
success := CkJsonArray_LoadSb(arr,sbJsonArray);

i := 0;
count := CkJsonArray_getSize(arr);

while i < count do
  begin
    obj := CkJsonArray_ObjectAt(arr,i);
    tagId := CkJsonObject_IntOf(obj,'tagId');
    tagDescription := CkJsonObject__stringOf(obj,'tagDescription');
    isPublic := CkJsonObject_BoolOf(obj,'isPublic');

    Memo1.Lines.Add('tagId: ' + IntToStr(tagId));
    Memo1.Lines.Add('tagDescription: ' + tagDescription);
    Memo1.Lines.Add('isPublic: ' + IntToStr(Ord(isPublic)));
    Memo1.Lines.Add('--');

    CkJsonObject_Dispose(obj);
    i := i + 1;
  end;

CkStringBuilder_Dispose(sbJsonArray);
CkJsonArray_Dispose(arr);

end;