JSON オブジェクトを検索
このステップを使用して、指定された条件を満たす JSON 値内の最初のオブジェクトまたはすべてのオブジェクトを検索します。検索は深度優先の順序に従って実行されます。検出されたオブジェクトは JSON 配列に保存され、変数に返されます。一致するオブジェクトが見つからない場合は、空の配列が返されます。
必要に応じて、このステップでは、見つかったオブジェクトを結果配列に格納する前に変換することができます。オブジェクト自体ではなく、検出されたオブジェクトへの JSON パスを返すという選択もできます。
プロパティ
- 検索範囲
-
入力 JSON 値。
たとえば、[{"a": 1, "b": 2}, {"a": 3},{"b": 4}] のようになります。この値は以下のすべての例で使用されることに注意してください。
また、このプロパティを設定して、JSON 入力パラメータまたは変数値で検索することもできます。
- 検索条件
-
ブール式の形式で検索条件を指定します。このステップは、JSON 値内の各オブジェクトに対してこの式を評価し、オブジェクトを結果に含める必要があるかどうかを判断します。
この式では、オブジェクトを参照するために組み込み変数 $object を使用します。
次の例を検討してください。[検索範囲] を [{"a": 1, "b": 2}, {"a": 3},{"b": 4}] に設定し、[検索条件] に $object.hasKey("a") を設定します。結果は、「a」: [{"a": 1, "b": 2}, {"a": 3}] というキーを持つすべてのオブジェクトになります。
$object.hasKey("a") && $object.a.integer() == 1 と入力して検索結果を絞り込むと、指定したキーと値を持つすべてのオブジェクトを収集することができます。したがって、[JSON オブジェクトを検索] ステップでは、JSON 値に格納された、キーが「a」で、値が「1」であるすべてのオブジェクトが収集されます。
[検索条件] が true に設定されている場合、このステップは JSON 値内のすべてのオブジェクトを収集します。
- 最初に検索
-
最初の結果のみを検索して保存するには、このオプションを使用します。
選択すると、[JSON オブジェクトを検索] ステップは、検索条件を満たすオブジェクトが見つかった場合にすぐに JSON ツリー内での検索を停止します。収集されたオブジェクトは JSON 配列で返されます。
オブジェクトが見つからない場合、返される配列は空になります。検索は深度優先の順序に従って実行されます。
たとえば、[検索条件] が true に設定されており、[最初に検索] オプションが選択されている場合、[JSON オブジェクトを検索] ステップでは次のような配列の最初のオブジェクトのみが収集されます: [{"a": 1, "b": 2}]。
- オブジェクトを変換
-
検出されたオブジェクトの値を結果に保存する前に別の JSON 値に変換するには、このオプションを選択します。たとえば、値を持つ追加のキーをオブジェクトに追加したり、特定のキーの値を選択したり、キーを削除したり、値とその値が見つかったパスを組み合わせたり、値を置き換えたりすることができます。このオプションを選択した場合は、式を入力する必要があります。この式は、2 つの組み込み変数を参照している場合があります。
-
$object: 検出されたオブジェクトの値。
-
$path: 検出されたオブジェクトへの JSON パス。パスを使用して元の JSON 値を後で更新することもできます。
これらの変数は、[$object, $path] のように組み合わせて使用することができます。また、結果には検出されたオブジェクトおよびこのオブジェクトへのパスが表示されます。
このオプションを使用すると、次のようなことができます。
-
式を指定して、見つかったオブジェクトの値をすぐに変換する。
例:
検索条件 $object.hasKey("a") を使用して、[オブジェクトを変換] プロパティに {"a": $object.a.number() + 1} のような式を指定します。これにより、それぞれのキー「a」: [{"a": 2}, {"a": 4}] の初期値に 1 が追加されます。
-
変換するオブジェクトおよび/またはオブジェクトへのパスを指定し、[JSON を更新] ステップでこれらの値をさらに変換するようにロボットを設計する。
例:
検索条件 $object.hasKey("a") を使用して、[オブジェクトを変換] を次のように構成します。
-
$object.a: このステップは、キー「a」を持つオブジェクトを値に変換します。[1, 3]。
-
$path: このステップは、キー「a」を持つオブジェクトをパスに変換します。["[0]", "[1]"]。
後ほど、JSON を更新 ステップを追加して、JSON オブジェクト内の値を置き換えることもできます。
-
-
- 結果の保存先
-
検索結果を保存する JSON 型の変数を指定します。
すべての JSON オブジェクトの検索と変換
以下の例は、オブジェクトを名前、電話番号、およびその他のデータなどのリスト内の値に変換する必要がある場合に、[JSON オブジェクトを検索] ステップを使用する方法を示しています。
「list」入力パラメータで、すべてのオブジェクトを検索し、キー「n」を持つすべてのオブジェクトをその値に変換する JSON 値を指定します。
この例では、次のような 2 つの重要な条件があります。
-
キー「n」を持つすべてのオブジェクトが配列の要素である。
この条件により、キー「n」を持つ他のオブジェクトの値がリストに取得されないことが保証されます。
-
リスト内のすべてのオブジェクトに、「n」という名前のキーがある。
この条件により、[オブジェクトを変換] 式がエラーなしで評価されることが保証されます。
結果は 「result」という変数に保存されます。新しい JSON 値は、レコーダー ビューの JSON タブに配列として表示されます。
