У меня есть этот код:
Код: Выделить всё
with open('foobar.json', 'r') as fp:
data = json.load(fp)
path = jmespath.search('[].record|[?value==`a`]', data)
pp.pprint(path)
Код: Выделить всё
[
{"record":{"@type":"FOO", "value": "a"}},
{"record":{"@type":"BAR", "value": "b"}},
{"record":{"@type":"BAZ", "value": "c"}}
]
Код: Выделить всё
[{'@type': 'FOO', 'value': 'a'}]
Но когда я меняю выражение на:
Код: Выделить всё
path = jmespath.search('[].record|[?@type==`FOO`]', data)
Код: Выделить всё
File "/Users/msarrel/PycharmProjects/SISs/.venv/lib/python3.10/site-packages/jmespath/parser.py", line 488, in _raise_parse_error_maybe_eof
raise exceptions.ParseError(
jmespath.exceptions.ParseError: Expecting: rbracket, got: unquoted_identifier: Parse error at column 13, token "type" (UNQUOTED_IDENTIFIER), for expression:
"[].record|[?@type==`FOO`]"
^
Код: Выделить всё
path = jmespath.search('[].record|[?\@type==`FOO`]', data)
Код: Выделить всё
path = jmespath.search('[].record|[?\\@type==`FOO`]', data)
Код: Выделить всё
path = jmespath.search('[].record|[?\u0040type==`FOO`]', data)
Есть идеи?
Я не имею права избавиться от @ в ключах словаря.
Подробнее здесь: https://stackoverflow.com/questions/786 ... start-with