jsonpath_ng.lexer.JsonPathLexerError: ошибка в строке 1, столбец 8: неожиданный символ: / - PullRequest
0 голосов
/ 25 мая 2020

Я использую библиотеку jsonpath_ng для создания выражения jsonpath, но получаю ошибку при синтаксическом анализе выражения, поскольку выражение содержит /. jsonpath_ng.lexer.JsonPathLexerError: Ошибка в строке 1, столбец 8: Неожиданный символ: /

Пробовали библиотеки jsonpath_rw_ext, jsonpath_ng.ext, но все еще возникают похожие ошибки.

from jsonpath_ng import jsonpath,parse
jsonpath_expression = parse('$.paths./createJob.post.parameters[0].schema.$ref') ```

1 Ответ

0 голосов
/ 25 мая 2020

Ошибка возникает из-за того, что библиотека jsonpath_ng интерпретирует символ / как числовое c деление, а не как допустимый символ в идентификаторах.

Однако в то же время это необычно ( хотя это не невозможно), чтобы JSON содержало / символов в именах свойств.

Насколько я понимаю, то, что вам нужно сделать, зависит от имеющихся данных:

  1. Если ваш JSON действительно имеет символ / в именах свойств , т.е. он выглядит следующим образом:

    {"paths": {"/createJob": {"post": ... } } }
    

    тогда вам нужно будет использовать обозначение скобок (['propertyname']) вместо записи через точку (.propertyname):

    jsonpath_expression = parse("$.paths['/createJob'].post.parameters[0].schema.$ref")
    
  2. Если ваш JSON на самом деле не содержит / символов в именах свойств, вам следует просто удалить / из выражения JSON Path.

Обратите внимание, что я не могу гарантировать ни один из этих подходов к возврату данных, потому что вы не предоставили ни образцы данных для запроса, ни ожидаемый результат выполнения запроса JSON Path.

...