How to check if a particular element exists in SuperObject?

delphi, json, superobject

Solution

The latest update of SuperObject contains an `Exists()` function.

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

If you should use the dwsJSON parser instead, there is a similar function to use:

if json['DoesNotExists'].ElementCount = 0 then begin
  WriteLn('Not found');
end;

Problem

I widely use the `SuperObject` JSON library. I need to be able to check if a particular element exists in an object or not. I can check the value of an element, for example an integer that doesn't exist returns `0`. However, `0` is one of the possible values if it does exist - so I can't depend on observing `0` for the element's existence. I checked the `ISuperObject` for methods that can do this (for example I'd expect something like `ISuperObject.Exists(const S: String): Boolean;`), but see nothing like this. How can I check if a particular element exists in the JSON object or not?

Original source