Ошибка при использовании библиотеки jsonpath_ng

Пытаюсь заменить циклы поиска в Json файле на шаблонный поиск с помощью jsonpath_ng. Однако столкнулся с проблемой. Я хочу выбрать из всех элементов result значение из поля value где id равен 5757.

json file

{
  "apiversion": 3 ,
  "result": [{
          "id": 34 ,
          "value": "182" ,
        } ,
        {
          "id": 5757,
          "value": "4" ,
        } ,
        {
          "id": 790 ,
          "value": "+5" ,
        }
]}

Не могу понять почему выдаёт ошибку при поиске по шаблону. информацию брал https://pypi.org/project/jsonpath-ng/

from jsonpath_ng import jsonpath, parse
jsonpath_expression = parse('$.result[?(@id = 5757)].value')

Сама ошибка

Traceback (most recent call last):
  File "D:/path/path/path.py", line 381, in <module>
    fa.check_path(data)
  File "D:/path/path/path.py", line 147, in check_path
    jsonpath_expression = parse('$.result[?(@id = 5757)].value')
  File "C:\Program Files (x86)\Python\Python38-32\lib\site-packages\jsonpath_ng\parser.py", line 14, in parse
    return JsonPathParser().parse(string)
  File "C:\Program Files (x86)\Python\Python38-32\lib\site-packages\jsonpath_ng\parser.py", line 32, in parse
    return self.parse_token_stream(lexer.tokenize(string))
  File "C:\Program Files (x86)\Python\Python38-32\lib\site-packages\jsonpath_ng\parser.py", line 55, in parse_token_stream
    return new_parser.parse(lexer = IteratorToTokenStream(token_iterator))
  File "C:\Program Files (x86)\Python\Python38-32\lib\site-packages\ply\yacc.py", line 333, in parse
    return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
  File "C:\Program Files (x86)\Python\Python38-32\lib\site-packages\ply\yacc.py", line 1063, in parseopt_notrack
    lookahead = get_token()     # Get the next token
  File "C:\Program Files (x86)\Python\Python38-32\lib\site-packages\jsonpath_ng\parser.py", line 179, in token
    return next(self.iterator)
  File "C:\Program Files (x86)\Python\Python38-32\lib\site-packages\jsonpath_ng\lexer.py", line 35, in tokenize
    t = new_lexer.token()
  File "C:\Program Files (x86)\Python\Python38-32\lib\site-packages\ply\lex.py", line 386, in token
    newtok = self.lexerrorf(tok)
  File "C:\Program Files (x86)\Python\Python38-32\lib\site-packages\jsonpath_ng\lexer.py", line 167, in t_error
    raise JsonPathLexerError('Error on line %s, col %s: Unexpected character: %s ' % (t.lexer.lineno, t.lexpos - t.lexer.latest_newline, t.value[0]))
jsonpath_ng.lexer.JsonPathLexerError: Error on line 1, col 9: Unexpected character: ? 

Ответы (0 шт):