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

JSON: Miscellaneous Operations

See more JSON Examples

Demonstrates a variety of JSON API methods. This example uses the following JSON document:
{
   "alphabet": "abcdefghijklmnopqrstuvwxyz",
   "sampleData" : {
           "pi": 3.14,
	   "apple": "juicy",
	   "hungry": true,
	   "withoutValue": null,
           "answer": 42
          
	}
}

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.JsonObject;

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

procedure RunDemo;
var
  success: Boolean;
  json: TJsonObject;
  sampleData: TJsonObject;

begin
  success := False;

  json := TJsonObject.Create;
  json.EmitCompact := False;

  //  Assume the file contains the data as shown above..
  success := json.LoadFile('qa_data/json/sample2.json');
  if (success = False) then
    begin
      WriteLn(json.LastErrorText);
      Exit;
    end;

  //  Get the "sampleData" object:
  sampleData := TJsonObject.Create;
  json.ObjectOf2('sampleData',sampleData);

  //  Demonstrate BoolAt and BoolOf
  WriteLn('hungry: ' + sampleData.BoolOf('hungry'));
  WriteLn('hungry: ' + sampleData.BoolAt(2));

  //  StringOf returns the value as a string regardless of it's actual type:
  WriteLn('pi: ' + sampleData.StringOf('pi'));
  WriteLn('answer: ' + sampleData.StringOf('answer'));
  WriteLn('withoutValue: ' + sampleData.StringOf('withoutValue'));
  WriteLn('hungry: ' + sampleData.StringOf('hungry'));

  //  Demonstrate IsNullOf / IsNullAt
  WriteLn('withoutValue is null? ' + sampleData.IsNullOf('withoutValue'));
  WriteLn('withoutValue is null? ' + sampleData.IsNullAt(3));
  WriteLn('apple is null? ' + sampleData.IsNullOf('apple'));
  WriteLn('apple is null? ' + sampleData.IsNullAt(1));

  //  IntOf
  WriteLn('answer: ' + sampleData.IntOf('answer'));

  //  SetNullAt, SetNullOf
  //  Set "pi" to null
  success := sampleData.SetNullAt(0);
  //  Set "answer" to null
  success := sampleData.SetNullOf('answer');

  //  Show the changes:
  WriteLn(json.Emit());

  //  Restore pi and apple:
  success := sampleData.SetNumberAt(0,'3.14');
  success := sampleData.SetNumberOf('answer','42');

  //  Show the changes:
  WriteLn(json.Emit());

  //  Add a null value named "afterApple" just after "apple"
  success := sampleData.AddNullAt(2,'afterApple');

  //  Add a boolean value just after "pi"
  success := sampleData.AddBoolAt(1,'afterPi',False);

  //  Examine the changes..
  WriteLn(json.Emit());


  json.Free;
  sampleData.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.