add helper for TJSONObject

This commit is contained in:
Basile Burg 2016-11-28 23:59:57 +01:00
parent 9b9c46305f
commit e36e61b683
No known key found for this signature in database
GPG Key ID: 1868039F415CB8CF
1 changed files with 45 additions and 1 deletions

View File

@ -15,7 +15,8 @@ uses
{$IFNDEF CEBUILD}
forms,
{$ENDIF}
LazFileUtils, process, asyncprocess, ghashmap, ghashset, LCLIntf, strutils;
LazFileUtils, process, asyncprocess, ghashmap, ghashset, LCLIntf, strutils,
xfpjson;
const
exeExt = {$IFDEF WINDOWS} '.exe' {$ELSE} '' {$ENDIF};
@ -89,6 +90,12 @@ type
function strictText: string;
end;
TJSONObjectHelper = class helper for TJSONObject
function findObject(const key: TJSONStringType; out value: TJSONObject): boolean;
function findArray(const key: TJSONStringType; out value: TJSONArray): boolean;
function findAny(const key: TJSONStringType; out value: TJSONData): boolean;
end;
(**
* TProcess with assign() 'overriden'.
*)
@ -467,6 +474,43 @@ begin
setLength(result, result.length - self.LineBreak.length);
end;
function TJSONObjectHelper.findObject(const key: TJSONStringType; out value: TJSONObject): boolean;
var
v: TJSONData;
begin
v := self.Find(key);
if v.isNotNil then
begin
result := v.JSONType = jtObject;
if result then
value := TJSONObject(v);
end
else
result := false;
end;
function TJSONObjectHelper.findArray(const key: TJSONStringType; out value: TJSONArray): boolean;
var
v: TJSONData;
begin
v := self.Find(key);
if v.isNotNil then
begin
result := v.JSONType = jtArray;
if result then
value := TJSONArray(v);
end
else
result := false;
end;
function TJSONObjectHelper.findAny(const key: TJSONStringType; out value: TJSONData): boolean;
begin
value := self.Find(key);
result := value.isNotNil;
end;
procedure TProcessEx.Assign(value: TPersistent);
var
src: TProcess;