Jmeter - 使用Json Path Extractor提取数据

时间:2018-02-08 12:10:40

标签: jmeter jsonpath

我在Jmeter中运行脚本并尝试从返回的json中提取数据,但我收到了WARN建议;但是,使用Sampler我可以看到变量的内容,但是当我在HTTP请求Post或IF控制器中使用时,变量是空的。

这是我的json(包括格式): {"职位":" 2 8 9","长度":13}

这是JSON Patch提取器: 目标变量名称:passwordPositions JSONPath表达式:$。[' position']

这是我收到的警告:

2018/02/08 12:05:11 WARN - com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor:提取失败的com.jayway.jsonpath.PathNotFoundException:期望找到一个具有属性的对象[&#39 ;位置']在路径$中但找到' java.lang.String'。根据JsonProvider,这不是json对象:' com.jayway.jsonpath.spi.json.JsonSmartJsonProvider'。     在com.jayway.jsonpath.internal.path.PropertyPathToken.evaluate(PropertyPathToken.java:71)     在com.jayway.jsonpath.internal.path.RootPathToken.evaluate(RootPathToken.java:62)     在com.jayway.jsonpath.internal.path.CompiledPath.evaluate(CompiledPath.java:53)     在com.jayway.jsonpath.internal.path.CompiledPath.evaluate(CompiledPath.java:61)     在com.jayway.jsonpath.JsonPath.read(JsonPath.java:187)     在com.jayway.jsonpath.internal.JsonContext.read(JsonContext.java:102)     在com.jayway.jsonpath.internal.JsonContext.read(JsonContext.java:85)     在com.jayway.jsonpath.JsonPath.read(JsonPath.java:502)     在com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor.process(JSONPathExtractor.java:102)     在org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:750)     在org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:452)     在org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:261)     在java.lang.Thread.run(Thread.java:745)

然后使用采样器,我看到变量的内容: enter image description here

但是当我在POST请求中将变量用作json时,json的内容为:

POST数据: {     "职位":"",     "价值观":" 1 1 5" }

这是我的json测试的定义: {     "职位":" $ {passwordPositions}",     "价值观":" 1 1 5" }

我做错了什么?我在互联网上查了几个例子,我找不到问题所在?

谢谢,

2 个答案:

答案 0 :(得分:0)

根据JSON Path Examples,您应该使用$.positions

演示

JMeter JSON Extractor

另请注意,从JMeter 3.0版开始,您拥有JSON Extractor内置组件,因此您不必使用任何插件,如果需要,请参阅API Testing With JMeter and the JSON Extractor文章了解更多信息

答案 1 :(得分:0)

我设法解决了这个问题。我使用了正则表达式提取器而不是Json提取器。我不确定是什么原因,我看到使用邮递员,也许回应不是真的'真实的' json,好像是xml / html;所以使用正则表达式提取器,我可以提取数据。 我对提取器的配置是:

参考名称:passwordPositions

正则表达式:"职位":"(。+?)"

模板:$ 1 $

比赛编号:-1