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의 목록 끝에 새 레코드를 추가합니다.