我广泛使用SuperObject
JSON 库。我需要能够检查对象中是否存在特定元素。我可以检查一个元素的值,例如一个不存在的整数返回0
。但是,0
如果它确实存在,它是可能的值之一 - 所以我不能依赖观察0
元素的存在。我检查了ISuperObject
可以执行此操作的 for 方法(例如,我希望有类似的东西ISuperObject.Exists(const S: String): Boolean;
),但没有看到类似的东西。
如何检查 JSON 对象中是否存在特定元素?
我广泛使用SuperObject
JSON 库。我需要能够检查对象中是否存在特定元素。我可以检查一个元素的值,例如一个不存在的整数返回0
。但是,0
如果它确实存在,它是可能的值之一 - 所以我不能依赖观察0
元素的存在。我检查了ISuperObject
可以执行此操作的 for 方法(例如,我希望有类似的东西ISuperObject.Exists(const S: String): Boolean;
),但没有看到类似的东西。
如何检查 JSON 对象中是否存在特定元素?
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;
如果您应该改用dwsJSON解析器,可以使用类似的函数:
if json['DoesNotExists'].ElementCount = 0 then begin
WriteLn('Not found');
end;
您可以像这样检查某个字段是否存在:
function FieldExists(const ASuperObject: ISuperObject; const AField: String): Boolean;
var
o: ISuperObject;
begin
o := ASuperObject.O[AField];
result := Assigned(o);
end;
基本上,json_superobject.O[field_name]
应该返回指向ISuperObject
是否field_name
存在的指针。否则,它返回nil
.