JMETER(Beanshell):令牌解析错误:第4行第25列的词汇错误。遇到:“你”(117),之后:“\”s

时间:2014-11-14 14:03:12

标签: java json jmeter beanshell

在JMETER中我有HTTP查询,返回JSON字符串如下:

{"url":"/some/path?Id=343\u0026"}

我尝试使用BeanShell采样器从中解析参数Id:

url = prev.getResponseDataAsString();
int start=url.indexOf('Id=');
int end = url.indexOf('u0026')-1;
newId=url.substring(start,end);
vars.put("newId", newId);

并收到错误:Token Parsing Error: Lexical error at line 4, column 25. Encountered: "u" (117), after : "\'s"

有什么想法吗?

因此似乎反斜杠会使解析器混乱。尝试了一些Java String操作(replaceAllURLEncoder.encode) - 它们似乎都没有帮助。

2 个答案:

答案 0 :(得分:0)

\ u0026实际上是一个字符,而不是6.将第3行更改为

int end = url.indexOf("\u0026");

顺便说一下,我不确定你使用单引号。我怀疑BeanShell正在从字符数组转换为String以使其工作。为了以防万一,最好让他们双引号。

答案 1 :(得分:0)

JSON URL包含额外参数:{" url":" / some / path?Id = 343 \ u0026success = 1"},因此以下代码有效:

url = prev.getResponseDataAsString();
int start=url.indexOf("Id=")+3;
int end = url.indexOf("success=1")-6; //note: "\u0026" is 6 characters
newId=url.substring(start,end);
vars.put("newId", newId);