JMeter 使用JSON提取器如何从列表中获取多个参数的所有值?

发布时间: 2024-06-28 17:53:40

JSON 提取器(JSON Extractor)是 JMeter 中的一种后置处理器,用于提取请求响应结果中的某个值或者某一组值,存储为指定的变量,用于后续的接口调用,实现接口关联,使用方法比正则表达式提取器简单,所以如果接口响应数据为 json 格式的,我们优先使用json提取器。

首先我们先来看看它的界面和参数是什么意思?
image

字段 说明
Apply to 应用范围,选默认的Main sample only就行了
Names of created variables 将通过 JSON 表达式提取的值,存到变量中,指定该变量的名称,多个变量名通过分号;隔开
JSON Path expression JSON Path表达式,比如$.data.bankBookItemVOList[0].name,多个表达式也是用;隔开
Match No.(0 for Random) 取第几个数值。0 表示随机,不填默认为 0,-1 匹配所有,1 匹配第一个值,多个数值通过分号;隔开
Compute concatenation var (suffix_ALL) 匹配到的所有数值并保存,默认不选即可,勾选后变量会自动命名为:variablename_ALL
Default Values 缺省值,匹配不到值的时候取该值,默认为空即可,也可以填 error,多个缺省值通过分号;隔开

举个例子,以下面响应结果为例:

{
    "code": 200,
    "data": {
        "total": 218,
        "current": 1,
        "pages": 109,
        "size": 2,
        "optimizeCountSql": true,
        "records": [
            {
                "img": "https:\/\/ydcqoss.ydcode.cn\/ydyx\/bbs\/1719377122-1pSGL3.png",
                "isLike": 0,
                "collectTimes": 0,
                "isCollection": 0,
                "avatar": "https:\/\/ydcqoss.ydcode.cn\/ydyx\/library1695624453-C5Uaup.jpeg",
                "title": "告别MySQL慢查询,解锁数据库性能新高度",
                "type": 0,
                "tagName": "MySQL数据库,编程学习",
                "likeTimes": 8,
                "isFollow": 0,
                "phone": "185****1503",
                "articleType": 0,
                "rankLevel": 4,
                "nickname": "汐汐",
                "createdTime": 1719376733,
                "identityTags": "",
                "id": 429,
                "describe": "日常工作中,我们经常遇到这样的情况:应用程序运行缓慢,用户反馈不佳,一番排查后发现症结在于MySQL数据库的查询效率不高,也就是俗称的\u201C慢查询\u201D问题。这不仅影响了用户体验,也限制了业务的快速发展。因此,掌握如何优化MySQL慢查询,让数据库重拾高效,变得尤为重要。本文将以实用为导向,从基础概念入手,逐步深入到具体的优化策略和实践技巧,旨在帮您理解慢查询的原因,并手把手教你如何一步步解除这个\u201C性能枷锁\u201D,让数据库性能如虎添翼,助力业务飞速发展。准备好了吗?Let\u2019s go!",
                "viewTimes": 42,
                "isCreator": 0,
                "contentType": 1,
                "isHot": 0,
                "memberId": 31
            },
            {
                "img": "https:\/\/ydcqoss.ydcode.cn\/ydyx\/bbs\/1719219849-y6U8i7.png",
                "isLike": 0,
                "collectTimes": 0,
                "isCollection": 0,
                "avatar": "https:\/\/ydcqoss.ydcode.cn\/ydcq\/1695193788-6El18K.jpg",
                "title": "精准把握时间脉络:Java日期时间处理API深度解析与实战指南",
                "type": 0,
                "tagName": "API,编程学习",
                "likeTimes": 6,
                "isFollow": 0,
                "phone": "121****0003",
                "articleType": 0,
                "rankLevel": 4,
                "nickname": "星空漫步者",
                "createdTime": 1719219704,
                "identityTags": "",
                "id": 428,
                "describe": " 在软件开发领域,准确无误地处理日期和时间信息是构建稳定、可靠应用程序的关键一环。随着技术的演进,Java作为一门广泛应用的编程语言,其处理日期和时间的API也经历了显著的变化和发展,旨在为开发者提供更为强大、灵活且易用的工具集。从最初的java.util.Date和Calendar,到Java 8中革命性的新日期时间API,每一次进步都标志着Java在时间处理方面的成熟与完善。本文将深入探讨Java中处理日期和时间的相关API,从基础概念到高级应用,引导您掌握高效、精确地操作日期时间数据的方法,从而在编码实践中告别时间处理的烦恼,迈向更高层次的编程体验。",
                "viewTimes": 42,
                "isCreator": 0,
                "contentType": 1,
                "isHot": 0,
                "memberId": 34
            }
        ],
        "maxLimit": null,
        "searchCount": true,
        "orders": [
        ],
        "countId": null
    },
    "message": "成功"
}

如何从上面响应中获取“title”和“nickname”的值呢?我们来看看JSON提取器参数设置:

  • Names of created variables:title;nickname
  • JSON Path expression:$.data.records[*].title;$.data.records[*].nickname
  • Match No.(0 for Random):-1;-1
  • Compute concatenation var (suffix_ALL):勾选
  • Default Values:error;error

Description
Description

我们可以看到调试取样器中已经获取到了“title”和“nickname”的所有值。我们只需要使用${title}和${nickname}引用即可。

347
3
0

评论区(0)

官方公众号

官方微信

官方微博

官方QQ群