Groovy中使用JsonPath篩選response

上圖是某一個TestStep的返回結構,如今須要解析response中i="window_1"的v值。json

import com.jayway.jsonpath.JsonPathjsonp

def resp = context.expand('${GetGrowthData_DataAPI#Response}')spa

def baseDriimport

  • 方式一:循環

JsonPath.read(resp, '$.data.r[0].c[0].e').each{ map->
    if(map.i == "window_1"){
        baseDri = map.v
    }
}
log.info baseDri變量

  • 方式二:filter(條件式過濾)

def list = JsonPath.read(resp, "\$.data.r[0].c[0].e[?(@.i == 'window_1')]")
baseDri = list[0].v
log.info baseDri循環

若在JsonPath中使用雙引號,就必須map

  1. 以「\$」開頭,就是在$以前加上一個轉義字符;
  2. 須要循環的條件用「[]」括起來,而且條件須要寫在「?()」裏面;
  3. 條件中的變量是用單引號;
  4. @符號以後有一個點號;
相關文章
相關標籤/搜索