evalDSJsonPath
evalDSJsonPath
DataSourceのデータに対してJSONPath式を評価し、一致する値のリストを返します。
パラメータ
dmPath(String): 取得するDataSourceのパス(例:"ds名.フィールド名")regularPath(String): 評価するJSONPath式(例:"$[*].price")
戻り値: List — JSONPath式に一致する値のリスト。一致する値がない場合やパスが無効な場合は空の配列([])を返します。
説明
DataSource(DS)にバインドされたデータを対象にJSONPath式を評価します。dmPathでDataSourceの特定のフィールドやリストを指定し、regularPathにJSONPath式を指定すると、そのデータの中で一致する項目をすべて抽出して返します。
$vm.evalProviderJsonPathがProvider Instanceの最新の応答(raw response)を対象に取得するのとは異なり、evalDSJsonPathはDataSourceに実際にバインドされたデータを直接取得します。ウィジェットにバインドされたデータを基準に値を抽出する場合や、insertDSValue・appendDSValueなどで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のリストの末尾に新しいレコードを追加します。