Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Read/Write JSON with Binary Data such as JPEG Files
See more JSON Examples
Demonstrates how binary files could be stored in JSON in base64 format. Creates JSON containing the contents of a JPG file, and then reads the JSON to extract the JPEG image.Chilkat Pascal (Lazarus/Delphi) Downloads
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.BinData,
Chilkat.JsonObject;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
bd: TBinData;
json1: TJsonObject;
jsonStr: string;
json2: TJsonObject;
bd2: TBinData;
begin
success := False;
// First load a small JPG file..
bd := TBinData.Create;
success := bd.LoadFile('qa_data/jpg/starfish20.jpg');
// Assume success, but your code should check for success..
// Create JSON containing the binary data in base64 format.
json1 := TJsonObject.Create;
json1.UpdateBd('starfish','base64',bd);
jsonStr := json1.Emit();
WriteLn(jsonStr);
// Here's the output:
// {"starfish":"/9j/4AAQSkZJRgA ... cN2iuLFsCEbDGxQkI6RO/n//2Q=="}
// Let's create a new JSON object, load it with the above JSON, and extract the JPG image..
json2 := TJsonObject.Create;
json2.Load(jsonStr);
// Get the binary bytes.
bd2 := TBinData.Create;
json2.BytesOf('starfish','base64',bd2);
// Save to a file.
success := bd2.WriteFile('qa_output/starfish20.jpg');
WriteLn('Success.');
bd.Free;
json1.Free;
json2.Free;
bd2.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.