Jmeter json路径提取器 - 如何从提取的值中删除[]

时间:2015-09-03 06:15:12

标签: json jmeter

来自

token_id="token_id":"82903430-f9b3-4f4b-9efa-ee1b991cb735"

我使用路径提取器token_id提取$..token_id

然后在下一个帖子请求中使用该变量,但它在调用中显示了额外的括号

"token_id":["82903430-f9b3-4f4b-9efa-ee1b991cb735"]

3 个答案:

答案 0 :(得分:6)

我相信它是由插件版本1.3.0中引入的更改引起的,其中JSONPath提取器支持返回多个匹配值was introduced

您可以使用以下3种方法之一来解决这个问题:

  1. 您可以将JSONPath表达式更改为

    $..token_id[0]
    

    因此,您不必手动删除括号和引号

  2. 我相信你有类似的东西:

    getToken=["82903430-f9b3-4f4b-9efa-ee1b991cb735"]
    getToken_1=82903430-f9b3-4f4b-9efa-ee1b991cb735
    getToken_matchNr=1
    

    所以只使用${getToken_1}应该像魅力一样工作

  3. 您可以使用Beanshell PostProcessor删除括号和引号。在 JSONPath提取程序后添加,并将以下代码放入"Script"区域:

    String getToken = vars.get("getToken");
    getToken = getToken.replaceAll("\\[\"(.*?)\"\\]", "$1");
    vars.put("getToken",getToken);
    

答案 1 :(得分:0)

在JSON中,括号表示字符串,数字,布尔值,对象和数组的数组。

“token_id”被解释为字符串数组。例如:

"token_id":["82903430-f9b3-4f4b-9efa-ee1b991cb735"]

确保将“token_id”更改为字符串。

答案 2 :(得分:0)

根据Dmitri T的建议使用getToken_1删除额外的括号,因为在 中使用数组存储响应。

${getToken_1}是从上面的回复中删除[]括号的正确正则表达式。