使用 JMeter JSON 提取器访问 JSON 数组值
Access JSON array values using JMeter JSON Extractor
我有以下 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 提取器来获取 technicalSettings 的值。这些值分配给变量 pPublishTechSettings。
现在我想访问变量 ${pPublishTechSettings_ALL} 中的每个数据。这个 JSON.
有两个值
我使用 ${pPublishTechSettings_0}、${pPublishTechSettings_1} 等变量来访问数据。但是它只适用于 ${pPublishTechSettings_1} 并且它给了我两个 technicalSettings 数据。
如何在 BeanShell Sampler 中访问单个 technicalSettings 数据,如 ${pPublishTechSettings_0}、${pPublishTechSettings_1}...?
注:-
当我在在线工具 JSON 中使用此 http://www.jsonquerytool.com/ and querying it like $..data..technicalSettings[0], $..data..technicalSettings1 时,我得到了正确的值。
使用路径表达式为:.data.technicalSettings[*]
您的 JSON 路径提取器设置如下:
每个控制器的设置如下:
为每个控制器添加请求,并在请求中使用${myvar}
。你会得到这样的东西:
请注意 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())
}
演示:
更多信息:
我有以下 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 提取器来获取 technicalSettings 的值。这些值分配给变量 pPublishTechSettings。
现在我想访问变量 ${pPublishTechSettings_ALL} 中的每个数据。这个 JSON.
有两个值我使用 ${pPublishTechSettings_0}、${pPublishTechSettings_1} 等变量来访问数据。但是它只适用于 ${pPublishTechSettings_1} 并且它给了我两个 technicalSettings 数据。
如何在 BeanShell Sampler 中访问单个 technicalSettings 数据,如 ${pPublishTechSettings_0}、${pPublishTechSettings_1}...?
注:-
当我在在线工具 JSON 中使用此 http://www.jsonquerytool.com/ and querying it like $..data..technicalSettings[0], $..data..technicalSettings1 时,我得到了正确的值。
使用路径表达式为:.data.technicalSettings[*]
您的 JSON 路径提取器设置如下:
每个控制器的设置如下:
为每个控制器添加请求,并在请求中使用${myvar}
。你会得到这样的东西:
请注意 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())
}
演示:
更多信息: