6

SuperObjectJSON ライブラリを広く使用しています。特定の要素がオブジェクトに存在するかどうかを確認できる必要があります。要素の値を確認できます。たとえば、存在しない整数が返されます0。ただし、存在する場合は可能な値の 1 つです。そのため、要素の存在0を監視することに依存することはできません。0これを実行できる for メソッドを確認しISuperObjectました (たとえば、 のようなものを期待しますISuperObject.Exists(const S: String): Boolean;) が、このようなものは何も表示されません。

特定の要素が JSON オブジェクトに存在するかどうかを確認するにはどうすればよいですか?

4

2 に答える 2

8

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;
于 2014-05-25T19:44:07.670 に答える
4

次のように、特定のフィールドが存在するかどうかを確認できます。

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]ポインタを返す必要があります。それ以外の場合は、 を返します。ISuperObjectfield_namenil

于 2014-05-25T19:06:26.777 に答える