在Jmeter脚本中,我需要处理一个http响应e操纵一个json以发送下一个请求,因为实际上这种操纵发生在Angular客户端中。
我的Http响应:
C:\> \path\to\vcvarsall.bat x86_amd64
C:\> set LIB=C:\OpenSSL-win64\lib;%LIB%
C:\> set INCLUDE=C:\OpenSSL-win64\include;%INCLUDE%
C:\> pip install cryptography
我需要将结果转换为json波纹,以在下一个请求中发布:
[
{
"function":"nameA",
"rast":"F1",
"tag":"EE",
"probs":"0,987"
},
{
"function":"nameB",
"rast":"F2",
"tag":"SE",
"probs":"0,852"
},
{
"function":"nameC",
"rast":"F3",
"tag":"CE",
"probs":"0,754"
}
]
我使用此JSON提取器过滤响应:
[
{
"function":"nameA",
"rast":"F1",
"type":{
"name":"EE"
},
"id":"alpha"
},
{
"function":"nameB",
"rast":"F2",
"type":{
"name":"SE"
},
"id":"alpha"
},
{
"function":"nameC",
"rast":"F3",
"type":{
"name":"CE"
},
"id":"alpha"
}
]
但是现在我需要解决其他问题:
添加一个[*].["function", "rast", "tag"]
属性(所有功能都相同)
添加名称类型的对象。
将标签属性移动到名为id
的对象中。
将标签属性重命名为type
。
答案 0 :(得分:2)
将以下代码放入“脚本”区域:
def json = new groovy.json.JsonSlurper().parse(prev.getResponseData()).each { entry ->
entry << [type: [name: entry.get('tag')]]
entry.remove('tag')
entry.remove('probs')
entry.put('id', 'alpha')
}
def newJson = new groovy.json.JsonBuilder(json).toPrettyString()
log.info(newJson)
就是这样,您应该在 jmeter.log 文件中看到生成的JSON。
如果需要在JMeter变量中添加它,请将下一行添加到脚本末尾:
vars.put('newJson', newJson)
,您将可以在需要时以${newJson}
的身份访问生成的值
更多信息: