groovy - 使用 jsonSplurper.parseText(prev.getResponseDataAsString()) 后无法获取属性
问题描述
我是 Jmeter 的新手,我正在使用 JSR223 PostProcessor 来获取响应中的一些属性。不幸的是,我的响应以字符串 json 的形式返回,如下所示:
"{\n "trueOdds": "1.9047619047619047",\n "displayOdds": "1.90",\n "minStake": 50.0,\n "maxStake": 105263,\n "selectionId": "11318855000001015h",\n "oddsStyle": "de",\n "offerId": "1911208285033005"\n}"
现在我想获得 trueOdds, displayOdds 以在下一个请求中使用。我尝试使用以下代码来获取它们:
导入 groovy.json.JsonSlurper
def jsonString = prev.getResponseDataAsString();
def jsonSlurper = 新的 JsonSlurper();
def object = jsonSlurper.parseText(jsonString);
vars.put("trueOdds", object.trueOdds);
vars.put("displayOdds", object.displayOdds);
但我收到以下错误:
错误 oajeJSR223PostProcessor:JSR223 脚本中的问题,JSR223 PostProcessor javax.script.ScriptException:groovy.lang.MissingPropertyException:没有这样的属性:类的 trueOdds:java.lang.String
任何人都可以支持解决这个问题吗?多谢。
解决方案
鉴于以下 JSON 有效负载,我无法重现您的问题:
{
"trueOdds": "1.9047619047619047",
"displayOdds": "1.90",
"minStake": 50.0,
"maxStake": 105263,
"selectionId": "11318855000001015h",
"oddsStyle": "de",
"offerId": "1911208285033005"
}
演示:
如果您的回复看起来与您向我们展示的方式完全相同,则它不是有效的 JSON,因此您需要:
"
通过即子字符串函数删除第一个和最后一个- 删除所有出现的
\n
via 即replaceAll函数
建议的代码修改:
import groovy.json.JsonSlurper
def jsonString = prev.getResponseDataAsString();
def withoutQuotationMarks = jsonString.substring(1, jsonString.length() - 1)
def withoutLineBreaks = withoutQuotationMarks.replaceAll('\\\\n','')
def jsonSlurper = new JsonSlurper();
def object = jsonSlurper.parseText(withoutLineBreaks);
vars.put("trueOdds", object.trueOdds);
vars.put("displayOdds", object.displayOdds);
有关 JMeter 中 Groovy 脚本的更多信息:Apache Groovy - 为什么以及如何使用它
推荐阅读
- python - 如何编辑 *.dat 文件并从 python 中保存?
- html - 如何链接不同文件夹中的 CSS 和 HTML?
- opengl - GLSL 中最简单的 2D 光照
- python - pySerial 中的 readline() 有时会捕获从 Arduino 串行端口流式传输的不完整值
- python - Finding historical seasonal average for given month in a monthly series in a dataframe time-series
- sql-server - Raising Errors in SQL Server ( THROW Command) with IF condition - SQL Server
- r - 处理 AESO 在 R 中发布的夏令时数据的最佳实践是什么?
- python - 运行 Django、Apache2、PostGreSQL Ubuntu 18.04.3 LTS 时出现 500 错误
- amazon-web-services - AWS SAM 模板获取具有内在函数的规则名称
- c - 代码上的这个表达式有什么问题?