• Jmeter-后置处理器-Json提取器(JSON Extractor)


    JSON提取器的基本使用

    JSON 提取器可以通过使用JSON-PATH语法从JSON类型得到响应中提取数据。主要用于关联接口或需要对响应数据进行处理;如果要使用JSON提取器,必须将其放到取样器的子集;

    Names of created variables 此处填写变量名,用于接收JSON-PATH提取出的数据,如果提取多个数据则通过分号将变量名分隔
    JSON Path expressions  此处填写JSON-PATH语法,提取多个数据时可通过分号将JSON-PATH 分隔(下面有JSON-PATH语法示例)
    Match No.(0 for Random) 如果JSON-PATH提取到多个结果,则可以选择指定的作为变量值,0表示随机取值,-1表示提取所有结果值,他们将被命名为<变量名_N>N表示从1-结果数量
    Compute concatenation var (suffix_ALL) 勾选后,如果找到多个结果,将会通过逗号将多个结果串联保存到<变量名_ALL>中
    Default Values 如果JSON-PATH提取不到值将会使用,只提取一个数据可以不用填写,如果提取多个数据则必须设定与之对应数量的默认值,通过分号分隔

    JSON-PATH语法

    1.JSON-PATH的两种使用方式

    $.store.book[0].title 通过点寻找一下级
    $['store']['book'][0]['title'] 通过中括号寻找下一级

    2.最常用的操作符

    Operator Description
    $ 操作JSON数据的根元素,后面要匹配的路径都通过$开始
    @ 操作当前节点,一般用于过滤匹配到的数据
    * 通配符,可以匹配任何的数据
    .. 深圳扫描,一个点获取下一节点,两个点可以深层扫描所有节点

    3.常用到的过滤运算符过滤操作

    OperatorDescription
    == 等值判断,注意:1 不等于 "1"
    != 不等值判断
    < 小于
    <= 小于等于
    > 大于
    >= 大于等于
    =~ 等号左边匹配波浪线右边的正则表达式 [?(@.name =~ /foo.*?/i)]
    in 是否在其中
    nin 不在其中

    4.操作示例

     1 {
     2     "store": {
     3         "book": [
     4             {
     5                 "category": "reference",
     6                 "author": "Nigel Rees",
     7                 "title": "Sayings of the Century",
     8                 "price": 8.95
     9             },
    10             {
    11                 "category": "fiction",
    12                 "author": "Evelyn Waugh",
    13                 "title": "Sword of Honour",
    14                 "price": 12.99
    15             },
    16             {
    17                 "category": "fiction",
    18                 "author": "Herman Melville",
    19                 "title": "Moby Dick",
    20                 "isbn": "0-553-21311-3",
    21                 "price": 8.99
    22             },
    23             {
    24                 "category": "fiction",
    25                 "author": "J. R. R. Tolkien",
    26                 "title": "The Lord of the Rings",
    27                 "isbn": "0-395-19395-8",
    28                 "price": 22.99
    29             }
    30         ],
    31         "bicycle": {
    32             "color": "red",
    33             "price": 19.95
    34         }
    35     },
    36     "expensive": 10
    37 }
    JSON-PATHResult
    $.store.book[*].author store下所有book的author
    $..author 所有author
    $.store.* store下的所有
    $.store..price store下所有的price
    $..book[2] 从开始匹配到第三个book
    $..book[-2] 匹配到倒数第二个book
    $..book[0,1] 从开始匹配前两个book
    $..book[:2] 从索引0开始匹配,匹配到索引2,注意左闭右开
    $..book[1:2] 从索引0开始匹配,匹配到索引2,注意左闭右开
    $..book[-2:] 匹配最后面的两个book
    $..book[2:] 从第二个book开始匹配到结束
    $..book[?(@.isbn)] 当前节点所有带有isbn的book
    $.store.book[?(@.price < 10)] 当前节点所有price小于10的book
    $..book[?(@.price <= $['expensive'])] 所有price小于expensive的book
    $..book[?(@.author =~ /.*REES/i)] 所有与正则相匹配的book
    $..* 所有的所有
    $..book.length() book的数量
  • 相关阅读:
    电子书《数字化转型领导者的技术修养》免费下载
    数字签名
    C:条件编译
    轻量级日志收集方案Loki
    安装Kubernetes(k8s)保姆级教程---无坑版
    设计模式七大原则-迪米特法则
    设计模式七大原则-开闭原则
    设计模式七大原则-里氏替换原则
    deepin-terminal改造风云再起
    deepin-terminal再改造
  • 原文地址:https://www.cnblogs.com/XhyTechnologyShare/p/13906489.html
Copyright © 2020-2023  润新知