【问题标题】:Access JSON array values using JMeter JSON Extractor使用 JMeter JSON Extractor 访问 JSON 数组值
【发布时间】:2020-08-04 09:22:11
【问题描述】:

我有以下 JSON。

JSON -

{"data": {
    "statusCode": 200,
    "success": true,
    "technicalSettings": [{
            "program": "C:/temp/abc.exe",
            "actions": "9",
            "file_name": "abc1",
            "new_file_name": "newabc1",
            "version": "2.0.0.0",
            "product_name": "abc",
            "description": "abc",
            "eventdate": "20160601120000",
            "autoVoiceProfile": {
                "autoVoices": [{
                        "autoVoiceLanguage": 0,
                        "autoVoiceMessage": [{
                                "name": "AV1",
                                "duration": "1.200000",
                                "checksum": "2d4c44d142bc0391b980b8a103ab35cc23d8f7820895cb6025cf3c829139336c",
                                "fileName": "/usr/g/db/user_autoVoiceMsg7.aifc",
                                "id": 4
                            }, {
                                "name": "AV1",
                                "duration": "0.600000",
                                "checksum": "9538cf287d178964dcb57a05b7acbc00e04c800a9aaed0b22f5433d9dc79d80c",
                                "fileName": "/usr/g/db/user_autoVoiceMsg8.aifc",
                                "id": 4
                            }, {
                                "name": "AV2",
                                "duration": "2.800000",
                                "checksum": "050acdb345e079da1371623c9727bc16d166db0a0b47687ff93d736ddf37cde8",
                                "fileName": "/usr/g/db/user_autoVoiceMsg9.aifc",
                                "id": 5
                            }, {
                                "name": "AV2",
                                "duration": "4.100000",
                                "checksum": "c5a6a39df38505c0c22b75d9ea7781a1755e9c8c9f435e08034f579361ba751c",
                                "fileName": "/usr/g/db/user_autoVoiceMsg10.aifc",
                                "id": 5
                            }
                        ]
                    }
                ],
                "messagesitefilename": null
            }
        }, {
            "program": "C:/temp/abc.exe",
            "actions": "9",
            "file_name": "abc2",
            "new_file_name": "newabc2",
            "version": "2.0.0.0",
            "product_name": "abc",
            "description": "abc",
            "eventdate": "20160601120000",
            "autoVoiceProfile": {
                "autoVoices": [{
                        "autoVoiceLanguage": 0,
                        "autoVoiceMessage": [{
                                "name": "AV1",
                                "duration": "1.200000",
                                "checksum": "2d4c44d142bc0391b980b8a103ab35cc23d8f7820895cb6025cf3c829139336c",
                                "fileName": "/usr/g/db/user_autoVoiceMsg7.aifc",
                                "id": 4
                            }, {
                                "name": "AV1",
                                "duration": "0.600000",
                                "checksum": "9538cf287d178964dcb57a05b7acbc00e04c800a9aaed0b22f5433d9dc79d80c",
                                "fileName": "/usr/g/db/user_autoVoiceMsg8.aifc",
                                "id": 4
                            }, {
                                "name": "AV2",
                                "duration": "2.800000",
                                "checksum": "050acdb345e079da1371623c9727bc16d166db0a0b47687ff93d736ddf37cde8",
                                "fileName": "/usr/g/db/user_autoVoiceMsg9.aifc",
                                "id": 5
                            }
                        ]
                    }
                ],
                "messagesitefilename": null
            }
        }
    ],
    "library": {
        "version": 6,
        "dmIdVersion": 5
    }
},
"success": true,
"statusCode": 200,
"errorMessage": ""

}

我正在使用 JSON 提取器来获取技术设置的值。这些值被分配给变量 pPublishTechSettings。

现在我想访问变量 ${pPublishTechSettings_ALL} 中的每个数据。此 JSON 中有两个值。

我使用 ${pPublishTechSettings_0}、${pPublishTechSettings_1} 之类的变量来访问数据。但它仅适用于 ${pPublishTechSettings_1},它为我提供了两个 TechnicalSettings 数据。

如何在 BeanShell 采样器中访问单个技术设置数据,例如 ${pPublishTechSettings_0}、${pPublishTechSettings_1}...

注意:-

当我在在线工具http://www.jsonquerytool.com/ 中使用此 JSON 并像 $..data..technicalSettings[0]、$..data..technicalSettings1 一样查询它时,我得到了正确的值。

【问题讨论】:

    标签: jmeter json-extract


    【解决方案1】:

    请注意 since JMeter 3.1 you should be using JSR223 Test Elements and Groovy language 用于编写脚本,因此我将为您提供 Groovy 选项,类似于:

    def technicalSettings = new groovy.json.JsonSlurper().parseText(vars.get('pPublishTechSettings_ALL'))
    
    technicalSettings.eachWithIndex { setting, index ->
        log.info('Setting ' + index + ': ' + new groovy.json.JsonBuilder(setting).toString())
    }
    

    演示:

    更多信息:

    【讨论】:

      【解决方案2】:

      使用ForEach Controller

      使用路径表达式为:.data.technicalSettings[*]

      您的 JSON 路径提取器设置如下:

      每个控制器的设置如下:

      为每个控制器添加请求并在请求中使用${myvar}。你会得到这样的东西:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-03
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        相关资源
        最近更新 更多