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. @符号以后有一个点号;
相关文章
相关标签/搜索