синтаксис пути для обхода объектов Python - PullRequest
2 голосов
/ 05 октября 2019

Существует ли основанный на выражениях инструмент для запроса сложных объектов Python так же, как можно использовать XPath для XML или jsonpath для JSON?

Я думал о сериализации моего объекта в JSON и последующем использовании на нем jsonpath, но, похоже, это неуклюжий способ сделать это.

Ответы [ 3 ]

2 голосов
/ 05 октября 2019

Вы можете использовать встроенную библиотеку json, чтобы импортировать json как вложенный словарь и проходить по нему с помощью словарной нотации - root['level1_object']['level2_object']. JSON-совместимые типы объектов, конечно, загружаются как соответствующие типы Python.

Для других типов данных существуют другие библиотеки, которые в основном ведут себя аналогичным образом.

Мой новый любимый - Поле , позволяющее просматривать вложенные словари, используя точечные обозначения.

1 голос
/ 12 октября 2019

@ vBobCat Я сейчас нахожусь в поиске аналогичного решения. Договорились, что сериализация и десериализация с JSON не идеальны. С чем вы в итоге пошли?

Я обнаружил, что http://objectpath.org/ близко к правильному решению для моего варианта использования, хотя в нем отсутствуют функции для произвольного обновления необходимых мне полей. Его синтаксис, хотя и немного отличается от JSONPath, выражает многие вещи, которые делает JSONPath.

1 голос
/ 05 октября 2019

Возможно, вы захотите взглянуть на модуль AST: https://docs.python.org/2/library/ast.html

...