jmespath / jmespath.py

JMESPath is a query language for JSON.
http://jmespath.org
MIT License
2.19k stars 181 forks source link

Support for escaping dots in key #324

Open arielpontes opened 9 months ago

arielpontes commented 9 months ago

Consider the following dictionary (which is also valid JSON):

 my_dict = {"props": {"data.value": [{"name": "Ariel"}]}}

How can I access the value "Ariel" here? I tried jmespath.search("props.data.value[0].name") and jmespath.search("props.data\.value[0].name") but none of these options worked. In the documentation I didn't find any information regarding customizing the dot notation (perhaps using double-underscore instead, although that could also be found inside a key). Is there any way to handle such a situation?

If not, shouldn't there be? Escaping dots within keys with backslashes is the most natural solution that comes to my mind.

ftnt-dspille commented 9 months ago

You can put the key in quotes to escape the period, like this jmespath.search('props."data.value"[0].name')

I'm assuming the docs that reference using quotes to escape the symbol is this link - https://jmespath.org/specification.html#raw-string-literals