Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Check if Integer Exists at JSON Path
Demonstrates how to get an integer value at a JSON path, and how to check to see if it exists.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.JsonObject;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
json: TJsonObject;
path: string;
val: Integer;
wasFound: Boolean;
begin
success := False;
json := TJsonObject.Create;
// First build simple JSON..
json.UpdateInt('test.abc',100);
json.EmitCompact := False;
WriteLn(json.Emit());
// This is our JSON:
// {
// "test": {
// "abc": 100,
// }
// }
path := 'test.notHere';
// The call to IntOf will return 0, because it's not present.
// But how do we know if it really was present, and the value was truly 0?
val := json.IntOf(path);
WriteLn('val = ' + val);
// We cannot use LastMethodSuccess because LastMethodSuccess only applies
// to methods that:
// - return a string
// - return a new Chilkat object, binary bytes, or a date/time.
// - returns a boolean status where True = success and False = failed.
// - returns an integer where failure is defined by a return value less than zero.
// The IntOf method fits none of these requirements, and therefore the LastMethodSuccess
// is not a valid indicator..
wasFound := json.LastMethodSuccess;
WriteLn('wasFound = ' + wasFound + ' (not a valid indicator)');
// Instead, if the returned value is 0, we can double-check to see if the member was truly there..
if (val = 0) then
begin
wasFound := json.HasMember(path);
WriteLn('wasFound = ' + wasFound);
if (wasFound = True) then
begin
WriteLn('The value was present and is 0.');
end
else
begin
WriteLn('no member is present at test.notHere');
end;
end
else
begin
WriteLn('val = ' + val);
end;
// Alternatively, you could check to see if the member exists beforehand..
if (json.HasMember(path) = True) then
begin
WriteLn('val = ' + json.IntOf(path));
end
else
begin
WriteLn('no member at ' + path);
end;
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.