Search code examples
javajsonjmeterbeanshell

JMETER (Beanshell): Token Parsing Error: Lexical error at line 4, column 25. Encountered: "u" (117), after : "\'s"


In JMETER I have HTTP query which returns JSON String as following:

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

I'm trying to parse parameter Id from it with BeanShell sampler:

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

and get an error: Token Parsing Error: Lexical error at line 4, column 25. Encountered: "u" (117), after : "\'s"

Any ideas?

So it seems like backslash confuses the parser. Tried some Java String operations (replaceAll, URLEncoder.encode) - none of them seems to help.


Solution

  • JSON URL contained extra parameter: {"url":"/some/path?Id=343\u0026success=1"}, so following code worked:

    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);