jmespath / jmespath.py

JMESPath is a query language for JSON.

Home Page:http://jmespath.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Support for escaping dots in key

arielpontes opened this issue · comments

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.

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