System.JSON.Builders.TJSONIterator

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

System.TObjectTJSONIterator

Delphi

TJSONIterator = class

C++

class PASCALIMPLEMENTATION TJSONIterator : public System::TObject

プロパティ

種類 可視性 ソース ユニット
class public
System.JSON.Builders.pas
System.JSON.Builders.hpp
System.JSON.Builders System.JSON.Builders


説明

JSON リーダーによって提供される内容を反復処理することができます。

イテレータは JSON リーダーと似ていますが、いくつか追加の機能があり、動作が少し異なります。たとえば次のような点です。

入力データの反復処理

入力 JSON リーダーの内容を反復処理するには:

  1. JSON リーダーのデータを読み取る JSON イテレータ作成します。
  2. Next を呼び出して、入力データの最初の JSON トークンにリーダーを移動します。
    • Typeトークンの種類を表します。
    • 配列を反復処理している場合は、Index を使って現在のトークンのインデックスを取得することができます。オブジェクトを反復処理している場合は、Key を使って現在のトークンのキーを取得することができます。
    • イテレータの値プロパティのいずれかを使用して、現在のトークンの値にアクセスすることができます。トークンの種類によって値の種類が決まり、それによってトークンの値にアクセスするために使用する値プロパティが決まります。たとえば TypeBoolean の場合には、AsBoolean を呼び出して現在のトークンの論理値にアクセスすることができます。
  3. Next を繰り返し呼び出すと、入力データのすべての JSON トークンをたどることができます。入力データの末尾に到達すると、NextFalse を返します。

Rewind を使用すると、入力データの先頭にイテレータを戻すことができます。

値プロパティ

TJSONIterator にはいくつかのプロパティが用意されていて、それを読み取ることで、イテレータの現在のトークンの値を取得することができます。Type プロパティの値によって、値を読み取るために使用するプロパティが決まります。

以下の表に、Type プロパティのと、現在のトークンの値を読み取るために使用する TJSONIterator のプロパティを示します。

Type の値 TJSONIterator のプロパティ

Boolean

AsBoolean

Bytes

AsBytes

CodeWScope

AsCodeWScope

Date

AsDateTime

DBRef

AsDBRef

Float

AsDouble
AsExtended

Integer

AsInteger
AsInt64

MaxKey

IsMaxKey

MinKey

IsMinKey

Null

IsNull

Oid

AsOid

RegEx

AsRegEx

String

AsString
AsGUID(文字列に GUID が含まれているとわかっている場合)

Undefined

IsUndefined

現在のトークンが他の形式である場合にその値にアクセスするには、AsValueAsVariant を使用することができます。

再帰の使用

TJSONIterator は、デフォルトでは、浅い反復処理を行うイテレータです。イテレータが配列やオブジェクトの全体を読み飛ばさないようにするには、種類TJsonToken.StartObject または TJsonToken.StartObject のトークンに到達するたびに、Recurse を呼び出してから Next を呼び出す必要があります。

再帰処理中に Return を使用すると、現在の配列またはオブジェクトの残りの内容を読み飛ばして、イテレータを配列またはオブジェクトの親に戻すことができます。

入力 JSON リーダーの反復処理を開始したときには、再帰の深さを示す Depth の値は 0 です。再帰処理で配列またはオブジェクトに入るたびに、この値は 1 だけ増えます。末尾に達するか Return を使って末尾まで読み飛ばすことで配列またはオブジェクトから離れると、この値は 1 だけ減ります。InRecurse は、イテレータの再帰の深さの値が 0 より大きいかどうかを示します。

ParentType は、現在のトークンの親の種類を示します(TJsonToken.StartObject または TJsonToken.StartObject)。深さが 0 であれば、ParentTypeTJsonToken.None です。

特定のデータが存在するかどうかの確認

Find を使用すると、入力 JSON リーダーの内容に、指定した JSON パスと一致するデータが含まれているかどうかを判断することができます。

関連項目