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

Firebase JSON Put and Patch

See more JSON Examples

Demonstrates how to apply Firebase put and patch events to a JSON database.

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
  json1: string;
  json: TJsonObject;

begin
  json1 := '{"a": 1, "b": 2}';

  json := TJsonObject.Create;

  //  Use Firebase delimiters for JSON paths.
  json.DelimiterChar := '/';

  json.Load(json1);
  json.FirebasePut('/c','{"foo": true, "bar": false}');
  //  Output should be: {"a":1,"b":2,"c":{"foo":true,"bar":false}}
  WriteLn('1) ' + json.Emit());

  json.FirebasePut('/c','"hello world"');
  //  Output should be: {"a":1,"b":2,"c":"hello world"}
  WriteLn('2) ' + json.Emit());

  json.FirebasePut('/c','{"foo": "abc", "bar": 123}');
  //  Output should be: {"a":1,"b":2,"c":{"foo":"abc","bar":123}}
  WriteLn('3) ' + json.Emit());

  //  Back to the original..
  json.FirebasePut('/','{"a": 1, "b": 2}');
  WriteLn('4) ' + json.Emit());

  json.FirebasePut('/c','{"foo": true, "bar": false}');
  json.FirebasePatch('/c','{"foo": 3, "baz": 4}');
  //  Output should be: {"a":1,"b":2,"c":{"foo":3,"bar":false,"baz":4}}
  WriteLn('5) ' + json.Emit());

  json.FirebasePatch('/c','{"foo": "abc123", "baz": {"foo": true, "bar": false}, "bax": {"foo": 200, "bar": 400} }');
  //  Output should be: {"a":1,"b":2,"c":{"foo":"abc123","bar":false,"baz":{"foo":true,"bar":false},"bax":{"foo":200,"bar":400}}}
  WriteLn('6) ' + json.Emit());


  json.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.