robotframework-jsonlibrary icon indicating copy to clipboard operation
robotframework-jsonlibrary copied to clipboard

JSONPath $..book[0,1] fails - Parse error at 1:9 near token , (,)

Open Tset-Noitamotua opened this issue 8 years ago • 2 comments

How to reproduce

Use JSON data (bookstore.json) and RF test case (bookstore.robot) from issue #7 but replace test case with this one:

Get the first two books
    Get Value From Json    ${bookstore_data}    $..book[0,1]

Result

Parse error at 1:9 near token , (,)	
14:53:23.052	DEBUG	Traceback (most recent call last):
  File "c:\python_virtual_envs\api_requests\lib\site-packages\JSONLibrary\JSONLibraryKeywords.py", line 77, in get_value_from_json
    json_path_expr = parse(json_path)
  File "c:\python_virtual_envs\api_requests\lib\site-packages\jsonpath_rw_ext\parser.py", line 179, in parse
    return ExtentedJsonPathParser(debug=debug).parse(path)
  File "c:\python_virtual_envs\api_requests\lib\site-packages\jsonpath_rw\parser.py", line 32, in parse
    return self.parse_token_stream(lexer.tokenize(string))
  File "c:\python_virtual_envs\api_requests\lib\site-packages\jsonpath_rw\parser.py", line 55, in parse_token_stream
    return new_parser.parse(lexer = IteratorToTokenStream(token_iterator))
  File "c:\python_virtual_envs\api_requests\lib\site-packages\ply\yacc.py", line 331, in parse
    return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
  File "c:\python_virtual_envs\api_requests\lib\site-packages\ply\yacc.py", line 1199, in parseopt_notrack
    tok = call_errorfunc(self.errorfunc, errtoken, self)
  File "c:\python_virtual_envs\api_requests\lib\site-packages\ply\yacc.py", line 193, in call_errorfunc
    r = errorfunc(token)
  File "c:\python_virtual_envs\api_requests\lib\site-packages\jsonpath_rw\parser.py", line 69, in p_error
    raise Exception('Parse error at %s:%s near token %s (%s)' % (t.lineno, t.col, t.value, t.type))

Tset-Noitamotua avatar Oct 08 '17 13:10 Tset-Noitamotua

... working alternative with slice

Get the first two books
    # Get Value From Json    ${bookstore_data}    $..book[0,1]  > fails, see above
    Get Value From Json    ${bookstore_data}    $..book[:2]       # wokrs

Tset-Noitamotua avatar Oct 08 '17 13:10 Tset-Noitamotua

Known issue from the parser: https://github.com/h2non/jsonpath-ng/issues/28

elrandira avatar May 11 '22 08:05 elrandira