FireDAC.Phys.MongoDBWrapper.TMongoDocument.Iterator
Delphi
function Iterator: TJSONIterator;
C++
System::Json::Builders::TJSONIterator* __fastcall Iterator(void);
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
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();
}