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

Jmeter json路径提取器-如何从提取的值中删除[],json,jmeter,regex,Json,Jmeter,Regex,从 我正在使用路径提取器提取token\u id…token\u id 然后在下一个post请求中使用变量,但它在调用中显示了额外的括号 "token_id":["82903430-f9b3-4f4b-9efa-ee1b991cb735"] 在JSON中,方括号表示字符串、数字、布尔值、对象和数组的数组 “token_id”被解释为字符串数组。例如: "token_id":["82903430-f9b3-4f4b-9efa-ee1b991cb735"] 确保将“token\u id”更改为s

我正在使用路径提取器提取
token\u id
…token\u id

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

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

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

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

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

确保将“token\u id”更改为string。

我认为这是由插件版本1.3.0中引入的更改引起的,其中
JSONPath
提取器支持返回多个匹配值

您可以使用以下三种方法之一解决此问题:

  • 您可以将
    JSONPath
    表达式更改为

    $..token_id[0]
    
    因此,您不必手动删除括号和引号

  • 我相信你有这样的想法:

    getToken=["82903430-f9b3-4f4b-9efa-ee1b991cb735"]
    getToken_1=82903430-f9b3-4f4b-9efa-ee1b991cb735
    getToken_matchNr=1
    
    因此,仅仅使用
    ${getToken_1}
    应该可以像一个符咒一样工作

  • 可以使用删除括号和引号。在
    JSONPath
    提取器之后添加,并将以下代码放入
    “脚本”
    区域:

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

  • 使用Dmitri T建议的
    getToken_1
    删除额外的括号,因为in使用数组存储响应

    ${getToken_1}
    是从上面的响应中删除
    []
    括号的合适正则表达式。

    ${getToken}给出[“82903430-f9b3-4f4b-9efa-ee1b991cb735”]我想删除额外的括号
    String getToken = vars.get("getToken");
    getToken = getToken.replaceAll("\\[\"(.*?)\"\\]", "$1");
    vars.put("getToken",getToken);