当前位置: 首页 > 知识库问答 >
问题:

使用jsonSplurper后无法获取属性。parseText(prev.getResponseDataAsString())

卜飞鸣
2023-03-14

我是Jmeter的新手,我使用JSR223后处理器在响应中获取一些属性。不幸的是,我的响应以字符串json的形式返回,如下所示:

{\n“TrueOffics”:“1.9047619047619047”、\n“DisplayOffics”:“1.90”、\n“minStake”:50.0、\n“MaxStack”:105263、\n“selectionId”:“11318855000001015h”、\n“OddssStyle”:“de”、\n“offerId”:“191120828503305”\n}

现在我想获得TrueLobbits,DisplayLobbits,以便在下一个请求中使用。我尝试使用以下代码获取它们:

导入groovy.json.JsonSlurper

def jsonString=prev。getResponseDataAsString();

def jsonSlurper=new JsonSlurper();

def object=jsonSlurper。parseText(jsonString);

瓦尔斯。put(“特鲁比”,object.true比);

瓦尔斯。put(“displayLobbs”,object.displayLobbs);

但我得到以下错误:

错误o. a. j. e.JSR223Post处理器:JSR223脚本中的问题,JSR223 Post处理器javax.script.脚本异常:groovy.lang.失踪属性异常:没有这样的属性: trueOdds for class:java.lang.String

有人能支持解决这个问题吗?多谢了。

共有1个答案

郭琦
2023-03-14

鉴于以下JSON负载,我无法重现您的问题:

{
  "trueOdds": "1.9047619047619047",
  "displayOdds": "1.90",
  "minStake": 50.0,
  "maxStake": 105263,
  "selectionId": "11318855000001015h",
  "oddsStyle": "de",
  "offerId": "1911208285033005"
}

演示:

如果您的响应与您向我们显示的内容完全一致,则它不是有效的JSON,因此您需要:

  1. 通过子字符串功能删除第一个和最后一个

建议的守则修正案:

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脚本的更多信息:ApacheGroovy-为什么以及如何使用它

 类似资料:
  • 我正在尝试使用JAXB读取一个xml。 我正面临一个奇怪的问题,其中父类的属性没有被读取,但子类的属性被读取。我参考了论坛,但这似乎是一个奇怪的论坛。 谁能告诉我我犯了什么错误。 XML。 电话目录类 电话号码类 主类 输出 如您所见,尽管提到了字段的XMLAt⃣注释,但exchange eName为null。 谢谢,毗湿奴

  • 所以,昨天一切都很好,但现在Android Studio和我的项目抛出了这个错误: 我谷歌了很长时间,但还没有找到任何解决方案。我的项目没有任何单词“Assemble”(项目中的Ctrl+Shift+F)。 gradlew clean Build-StackTrace:

  • 这是我的建筑。格雷德尔 因此,restTemplate抛出NullPointerException而不是返回模拟obj。

  • 我想读取build.gradle中local.properties中定义的属性(如本文所述),因此在根build.gradle文件中有以下内容: 在模块的build.gradle文件中,我有以下内容: 但同步后出现以下错误: 无法获取类型为com.android.build.gradle.internal.dsl.defaultconfig得defaultconfig得defaultconfig{

  • Beans文件: 在BaseTest中,当调用)方法时,属性文件中的值起作用,但如果试图将该值用作中的变量,则该值为空。你能帮帮我吗?

  • 我正在使用PostgreSQL、Sequelize和Express开发一个简单的CRUD应用程序。并以本教程作为参考。我的模型或数据库连接似乎有问题。详情如下: 文件夹结构: server |__config |__db.js |__env.js |__models |__missions.js |__router |__routes |__missions.js |__index.js |__i