FireDAC.Phys.MongoDBWrapper.TMongoDocument.Iterator

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

function Iterator: TJSONIterator;

C++

System::Json::Builders::TJSONIterator* __fastcall Iterator();

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
function public
FireDAC.Phys.MongoDBWrapper.pas
FireDAC.Phys.MongoDBWrapper.hpp
FireDAC.Phys.MongoDBWrapper TMongoDocument


Beschreibung

Erstellt eine neue Instanz und gibt eine Referenz auf einen JSON-Iterator zurück.

HINWEIS: Der Aufrufer dieser Methode muss das Iteratorobjekt nach dessen Verwendung freigeben.

Beispiele

Sehen Sie sich folgendes Szenario an:

  • Sie haben einer MongoDB-Datenmenge mit dem Beispielcode aus BeginObject ein Dokument hinzugefügt.
Dieses Dokument enthält das Feld "Label1", in dem ein eingebettetes Dokument mit drei Schlüssel/Wertepaaren enthalten ist: "Top": 30, "Left": 30, und "Caption": "Enter value:".
  • Sie haben auf dem Anwendungsformular eine Beschriftung (Label2-Variable mit dem Typ TLabel in diesem Beispiel) abgelegt.

Das folgende Codefragment zeigt, wie mit der Methode Iterator die Werte dieser Schlüssel/Wertepaare abgerufen und dann den Eigenschaften von Label2 zugewiesen werden.

Delphi:
var
  oDoc: TMongoDocument;
  oIter: TJSONIterator;
  Label2: TLabel;

....
  oIter := oDoc.Iterator;
  try
    oIter.Next('Label1');
    if (oIter.Key = 'Label1') and (oIter.&Type = TJsonToken.StartObject) then begin
      oIter.Recurse;
      oIter.Next;
      Label2.Position.Y := oIter.AsInteger;
      oIter.Next;
      Label2.Position.X := oIter.AsInteger;
      oIter.Next;
      Label2.Text := oIter.AsString;
      oIter.Return;
    end;
  finally
    oIter.Free;
  end;
C++Builder:
  TLabel *Label2;
  TMongoDocument *oDoc;
  TJSONIterator *oIter = oDoc->Iterator();
__try {
	oIter->Next("Label1");
	//Label2->Text  = "Starting ... " + oIter->Key;
	if ((oIter->Key == "Label1") && (oIter->Type == TJsonToken::StartObject)) {
	  oIter->Recurse();
	  oIter->Next();
	  Label2->Position->Y = oIter->AsInteger;
	  oIter->Next();
	  Label2->Position->X = oIter->AsInteger;
	  oIter->Next();
	  Label2->Text = oIter->AsString;
	  oIter->Return();
	}
	}
	__finally {
	oIter->Free();
	}

Siehe auch