jmespath 从不是 json 的列表中提取一个键

jmespath extract a key from a list which is not json

我正在尝试从列表中提取一段文本。
列表是这样的

[{'texts': [{'language': {'isoCode': 'it', 'name': 'Italian'},
    'text': 'CATETERI VENOSI CENTRALI CON ACCESSO PERIFERICO MULTILUME',
    'allLanguagesApplicable': None},
   {'language': {'isoCode': 'fr', 'name': 'French'},
    'text': 'CATHÉTERS VEINEUX CENTRAUX MULTILUMIÈRES PAR ABORD PÉRIPHÉRIQUE',
    'allLanguagesApplicable': None},
   {'language': {'isoCode': 'en', 'name': 'English'},
    'text': 'CENTRAL I.V. MULTI-LUMEN CATHETERS, PERIPHERAL ACCESS',
    'allLanguagesApplicable': None}]}]

我需要提取 language.isoCodeen 的文本。

但是 JMESPath 查询出于某种原因暗示我。

我希望输出为

CENTRAL I.V. MULTI-LUMEN CATHETERS, PERIPHERAL ACCESS

这是我的尝试

jmespath.search("[*].texts[?language.isoCode == 'en'].text[]", temp_json)
['CENTRAL I.V. MULTI-LUMEN CATHETERS, PERIPHERAL ACCESS']

但是,我只想要文本而不是数组。

您需要停止 [?language.isoCode == 'en'] 创建的过滤器投影以获取该数组的第一个元素。

这在教程的 pipe expressions 章节中有详细说明。

所以,你的查询结果是

[*].texts[?language.isoCode == 'en'].text[] | [0]

这给出了预期:

"CENTRAL I.V. MULTI-LUMEN CATHETERS, PERIPHERAL ACCESS"