(* Collection of code snippets by Arne Vajhøj *)
(* (from articles on eksperten.dk / vajhoej.dk written sometime between 2004 and now) *)
program Tree;

uses
  fpjson, jsonparser;

const
  json = '[ { "no" : 1, "name" : "Alan A", "role" : "Manager" }, ' +
           '{ "no" : 2, "name" : "Brian B", "role" : "Engineer" }, ' +
           '{ "no" : 3, "name" : "Chris C", "role" : "Sales rep" } ]';
var
  employees : TJSONArray;
  employee, newemployee : TJSONObject;
  name, role : string;
  no, i : integer;

begin
  (* iterate over all employees *)
  employees := TJSONArray(GetJSON(json));
  for i := 0 to employees.Count - 1 do begin
    employee := TJSONObject(employees.Items[i])
    (* find no, name and role *);
    no := employee.Integers['no'];
    name := employee.Strings['name'];
    role := employee.Strings['role'];
    (* print *)
    writeln('no = ', no);
    writeln('name = ', name);
    writeln('role = ', role);
  end;
  (* add employee *)
  newemployee := TJSONObject.Create;
  newemployee.Add('no', 4);;
  newemployee.Add('name', 'Dave D');;
  newemployee.Add('role', 'Intern');;
  employees.Add(newemployee);
  (* write out *)
  writeln(employees.AsJSON);
  employees.Free;
end.

