我有一个JSON,看起来像这样:
[
{"First Name": "xyz", "Last Name": "abc", "Name": "name1"},
{"First Name": "abc", "Last Name": "xyz", "Name": "name2"},
{"First Name": "abcd", "Last Name": "wxyz", "Name": "name3"}
]
我能够轻松地提取其中没有空格的条目。例如:
[?Name=='name1']
其给出:
[
{ "First Name": "xyz", "Last Name": "abc", "Name": "name1" }
]
但是,我无法获得键中有空格的条目。例如:
[?First Name =='xyz']
结果为Syntax error: expected Rbracket, got: UnquotedIdentifier
[?'First Name' =='xyz']
结果为[]
我是不是漏掉了什么?
Python中使用的JMESPath版本:
>>> jmespath.__version__
'0.10.0'
1条答案
按热度按时间wkftcu5l1#
查询中的key应该用双引号括起来:
这是因为单引号和双引号在JMESPath中的含义不同。
First Name
等于字符串xyz
,这显然永远不会为真标识符也可以被引用。当标识符包含未在
unquoted-string
语法规则中指定的字符时,这是必需的。在这种情况下,标识符用双引号指定,后跟任意数量的unescaped-char
或escaped-char
字符,再后跟一个双引号。quoted-string
规则是与JSON字符串相同的语法规则,因此任何有效的字符串都可以在双引号之间使用,包括JSON支持的转义序列和六个字符的Unicode转义序列。