在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
操作(replaceAll
,URLEncoder.encode
) - 它们似乎都没有帮助。
答案 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);