如何检查SuperObject中是否存在特定元素?

Jer*_*dge 4 delphi json superobject

我广泛使用SuperObjectJSON库.我需要能够检查对象中是否存在特定元素.我可以检查一个元素的值,例如一个不存在的整数返回0.但是,0如果它存在的话,它是可能的值之一 - 所以我不能依赖观察0元素的存在.我检查了ISuperObject可以做到这一点的for方法(例如我希望有类似的东西ISuperObject.Exists(const S: String): Boolean;),但是看不到这样的东西.

如何检查JSON对象中是否存在特定元素?

Mar*_*vic 5

您可以检查某个字段是否存在,如下所示:

function FieldExists(const ASuperObject: ISuperObject; const AField: String): Boolean;
var
  o: ISuperObject;
begin
  o := ASuperObject.O[AField];
  result := Assigned(o);
end;
Run Code Online (Sandbox Code Playgroud)

基本上,json_superobject.O[field_name]应该返回指向ISuperObject是否field_name存在的指针。否则,它返回nil


LU *_* RD 5

SuperObject的最新更新包含一个Exists()函数.

var
  obj : ISuperObject;
begin
  obj := TSuperObject.ParseFile('..\..\SAMPLE.JSON',FALSE);
  if not obj.AsObject.Exists('FindMe') then begin
    WriteLn('Not found');
  end;
end;
Run Code Online (Sandbox Code Playgroud)

如果您应该使用dwsJSON解析器,则可以使用类似的函数:

if json['DoesNotExists'].ElementCount = 0 then begin
  WriteLn('Not found');
end;
Run Code Online (Sandbox Code Playgroud)