メインコンテンツまでスキップ

evalDSJsonPath

evalDSJsonPath

DataSourceのデータに対してJSONPath式を評価し、一致する値のリストを返します。

パラメータ

  • dmPathString): 取得するDataSourceのパス(例: "ds名.フィールド名"
  • regularPathString): 評価するJSONPath式(例: "$[*].price"

戻り値: List — JSONPath式に一致する値のリスト。一致する値がない場合やパスが無効な場合は空の配列([])を返します。

説明

DataSource(DS)にバインドされたデータを対象にJSONPath式を評価します。dmPathでDataSourceの特定のフィールドやリストを指定し、regularPathにJSONPath式を指定すると、そのデータの中で一致する項目をすべて抽出して返します。

$vm.evalProviderJsonPathがProvider Instanceの最新の応答(raw response)を対象に取得するのとは異なり、evalDSJsonPathはDataSourceに実際にバインドされたデータを直接取得します。ウィジェットにバインドされたデータを基準に値を抽出する場合や、insertDSValueappendDSValueなどでDSを変更した後に結果を検証する場合に便利です。

JSONPath式は配列ルート($[*])を基準に記述し、ネストしたフィールドへのアクセス(.フィールド名)や条件フィルター([?(@.key == 'value')])など標準のJSONPath構文をサポートします。

Example

// DS "stockList"의 전체 항목 중 price 필드 값을 추출
const prices = $vm.evalDSJsonPath("stockList", "$[*].price");
$log.debug("가격 목록: " + JSON.stringify(prices));

// price가 10000 이상인 항목의 name 필드만 추출
const highPriceNames = $vm.evalDSJsonPath("stockList", "$[?(@.price >= 10000)].name");
$log.debug("고가 종목: " + JSON.stringify(highPriceNames));

// 결과가 없을 경우 처리
if (highPriceNames.length === 0) {
$log.debug("조건을 만족하는 항목이 없습니다.");
}

関連

  • $vm.evalProviderJsonPath(recvPath, regularPath) — Provider Instanceの応答データを対象にJSONPathを評価します。
  • $vm.getDSValue(path) — DataSourceの特定のパスにある値を返します。
  • $vm.insertDSValue(recordPath, jsonData) — DataSourceに新しいレコードを挿入します。
  • $vm.appendDSValue(recordPath, jsonData) — DataSourceのリストの末尾に新しいレコードを追加します。