You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中使用JMESPath提取含空格键的JSON数据问题

JMESPath提取含空格键名的JSON条目问题

给定如下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"}
]

提取无空格键名的条目时可以正常工作,比如使用JMESPath表达式 [?Name=='name1'],能得到正确结果:

[
  { "First Name": "xyz", "Last Name": "abc", "Name": "name1" }
]

但提取含空格的键名(如First Name)时遇到问题:

  • 使用表达式 [?First Name =='xyz'] 会报错:Syntax error: expected Rbracket, got: UnquotedIdentifier
  • 使用表达式 [?'First Name' =='xyz'] 返回空数组 []

使用的Python中JMESPath版本为0.10.0,请问问题出在哪里?


问题原因与正确写法

JMESPath中,当键名包含空格或其他特殊字符时,必须用双引号将键名包裹,而非单引号。

正确的表达式应为:

[?"First Name" == 'xyz']

错误原因分析:

  1. [?First Name =='xyz']:JMESPath会将空格后的Name识别为独立标识符,破坏了表达式的语法结构,导致解析报错。
  2. [?'First Name' =='xyz']:JMESPath中单引号用于定义字符串字面量,此处'First Name'被当作字符串值而非键名,实际是在比较字符串'First Name'和'xyz',结果必然为空。

使用正确表达式后,将得到预期结果:

[
  { "First Name": "xyz", "Last Name": "abc", "Name": "name1" }
]

内容的提问来源于stack exchange,提问作者host_unreachable

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 04:52:15