Я хотел бы знать, существует ли существующая библиотека Python для фильтрации документов JSON по полному ключевому пути, который сохраняет исходную структуру документа. Вот пример:
Входы
d = {"a": {"b": "c", "d": "e"}, "f": [{0: 0}, {1: 1}]}
keyPaths = ["a.b", "f[1]"]
Желаемый результат
{"a": {"b": "c"}, "f": [{1: 1}]}
Самое близкое решение, которое я нашел, — это операция jmespath MultiSelect Hash. ; однако я не думаю, что он может создать полную иерархию. Например:
jmespath.search("{a: a.b, f: f[1]}", d)
дает {'a': 'c', 'f': {1: 1}}
Но он не позволяет использовать a.b
в качестве идентификатора keyval-expr, т. е. {a.b: a.b}
недействителен. Одним из решений было бы использование хэша MultiSelect вместе с кодом для создания отсутствующей структуры для каждого пути ключа. Мне интересно, есть ли более элегантное решение.