json - 如何在 Jmeter 中操作 json 数据
问题描述
在 Jmeter 脚本中,我需要处理一个 http 响应并操作一个 json 以便在下一个请求中发送,因为实际上这种操作发生在 Angular 客户端中。
我的 Http 回复:
[
{
"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"
}
]
我使用这个 JSON 提取器过滤响应:
[*].["function", "rast", "tag"]
但现在我需要解决其他问题:
添加一个
id
属性(所有功能都相同)添加具有名称类型的对象。
将标签属性移动到名为
type
.将标签属性重命名为
name
.
解决方案
- 添加JSR223 PostProcessor作为返回原始 JSON 的请求的子级
将以下代码放入“脚本”区域:
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}
值
更多信息:
推荐阅读
- python - Pandas:如果语句有错误:“单个位置索引器超出范围”,则为 else
- java - 如何在javalin中给出日志路径
- reactjs - 如果数据存在于 redux 存储中,则阻止 API 调用
- qt - 将 qt5.5 移植到 qt5.9,qtdeclarative 模块移除
- java - 在 Android 后台下载多个 MP3 文件
- java - 尝试转换格式时无法解析的日期
- c# - 按下 Form1 中的按钮并检查 Form2 中的单选按钮
- android - 我可以从另一个片段调用片段的方法吗?
- docker - 如何能够在 docker 映像中写入文件?
- kubernetes - Kubernetes 自动缩放不起作用 - 显示未知