FireDAC.Phys.MongoDBWrapper.TMongoDocument.Iterator

提供: RAD Studio API Documentation
移動先: 案内検索

Delphi

function Iterator: TJSONIterator;

C++

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

プロパティ

種類 可視性 ソース ユニット
function public
FireDAC.Phys.MongoDBWrapper.pas
FireDAC.Phys.MongoDBWrapper.hpp
FireDAC.Phys.MongoDBWrapper TMongoDocument


説明

インスタンスを新規作成し、JSON イテレータの参照を返します。

メモ: イテレータ オブジェクトを使用した後、このメソッドを呼び出した側でそのオブジェクトを解放してください。

次のようなシナリオを考えます。

  • BeginObject のサンプル コードを使って MongoDB データセットにドキュメントを追加しました。
このドキュメントには Label1 というフィールドがあり、そこには、"Top": 30、"Left": 30、"Caption": "Enter value:" という 3 つのキー/値ペアを含むドキュメントが埋め込まれています。
  • アプリケーション フォームにラベルを 1 つドロップしました(この例では TLabel 型の Label2 という変数として参照されています)。

次のコードでは、Iterator メソッドを使ってこれらのキー/値ペアの値を取得し、それを Label2 のプロパティに代入しています。

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();
	}

関連項目