You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have a use-case where I'd like to be able to fetch data from either a raw API response (in dicts, lists, and other JSON-native types), OR from an already-parsed Pydantic model (even better if arbitrary Python classes/objects supported too).
It seems from the Descendents.find implementation like jsonpath-ng explicitly does not support fetching data from plain Python objects (for example using getattr(datum.value, field) instead of datum.value[field]). Would it be possible to enable this?
It is fair that there are some potentially funky edge cases here, because you'd be able to retrieve properties & methods from native objects (For example $.num.real.real.real.real... on {"num": 13})... So maybe it'd be necessary to put the ability to traverse plain objects behind a configuration option in parse(), and leave it turned off by default? That'd still un-block our use-case.
The text was updated successfully, but these errors were encountered:
athewsey
changed the title
Work with plain Python classes/objects as well as JSON dicts
Traverse plain Python classes/objects as well as JSON dicts
Nov 14, 2024
For now my workaround to this is to use JSONPath on obj.model_dump() (since this Pydantic method supports recursively converting possibly-nested models to plain dicts)... Which is okay, but wouldn't work for any use-cases hoping to use other Python objects that don't have this interface.
Hi & thanks for your work sharing this library!
I have a use-case where I'd like to be able to fetch data from either a raw API response (in
dict
s,list
s, and other JSON-native types), OR from an already-parsed Pydantic model (even better if arbitrary Python classes/objects supported too).It seems from the
Descendents.find
implementation likejsonpath-ng
explicitly does not support fetching data from plain Python objects (for example usinggetattr(datum.value, field)
instead ofdatum.value[field]
). Would it be possible to enable this?It is fair that there are some potentially funky edge cases here, because you'd be able to retrieve properties & methods from native objects (For example
$.num.real.real.real.real
... on{"num": 13}
)... So maybe it'd be necessary to put the ability to traverse plain objects behind a configuration option inparse()
, and leave it turned off by default? That'd still un-block our use-case.The text was updated successfully, but these errors were encountered: