¿Existe una herramienta basada en expresiones para consultar objetos complejos de Python de la misma manera que se puede hacer con XPath para XML o jsonpath para JSON?

Pensé en serializar mi objeto a JSON y luego usar jsonpath en él, pero parece ser una forma torpe de hacerlo.

2
VBobCat 5 oct. 2019 a las 15:13

3 respuestas

La mejor respuesta

Puede usar la biblioteca integrada json para importar json como un diccionario anidado y recorrerlo mediante la notación de diccionario - root['level1_object']['level2_object']. Los tipos de objetos compatibles con JSON, por supuesto, se cargan como tipos de Python correspondientes.

Para otros tipos de datos hay otras bibliotecas, que en su mayoría se comportan de manera similar.

Mi nuevo favorito es Box, que le permite recorrer diccionarios anidados utilizando una notación de puntos.

2
Paweł Szmajda 5 oct. 2019 a las 12:31

@vBobCat Actualmente estoy buscando una solución similar. Acordó que serializar y deserializar con json no es lo ideal. ¿Con qué terminaste yendo?

Encontré que http://objectpath.org/ está cerca de la solución correcta para mi caso de uso, aunque carece de características al hacer actualizaciones arbitrarias a los campos que necesito. Su sintaxis, aunque ligeramente diferente de JSONPath, expresa muchas de las cosas que hace JSONPath.

1
Greg 11 oct. 2019 a las 23:58

Es posible que desee echar un vistazo al módulo AST: https://docs.python.org/2/library/ast.html

1
user1460675 5 oct. 2019 a las 12:27
58248178