查询嵌套的python对象

时间:2016-12-17 19:45:09

标签: python jsonpath jmespath objectpath

我有一些用YAML创建的对象结构。在YAML内部使用了许多标签。因此,该文档不仅包含内置类型,还包含从已注册的构造函数创建的一些对象。我需要通过一些模式来检查它们。

到目前为止,我已尝试jsonpathobjectpathjmespathdpath。所有这些库都很棒,我喜欢查询语言(特别是前两个),但他们严格要求JSON作为输入。是否有一些原始对象的类比?

2 个答案:

答案 0 :(得分:1)

从我记得编写ObjectPath开始,有一些技术细微差别使查询Python对象变得难以实现。有用C编写的内置对象和类,不暴露对象属性,有隐藏其他类的私有属性等。

ObjectPath应该可以很好地处理从Dict继承的类,但代码是实验性的。它可以为您开箱即用,如果没有,那么代码就是最新的ObjectPath @ https://github.com/adriank/ObjectPath/blob/master/objectpath/core/interpreter.py#L47

答案 1 :(得分:1)

glom处理此问题:

>>> from glom import glom
>>> from types import SimpleNamespace
>>> sn1 = SimpleNamespace()
>>> sn1.foo = SimpleNamespace()
>>> sn1.foo.bar = "baz"
>>> glom(sn1, "foo.bar")
'baz'