如何用JMESPath基于externalId提取JSON中的name字段
正确JMESPath表达式提取指定externalId对应的name字段
需求场景
根据JSON数据中fields数组里externalId值为2720135的条目,提取对应父级的name字段(目标结果为"360 Index")。
正确JMESPath表达式
data[?fields[?name=='externalId' && data.externalId=='2720135']].name | [0]
表达式说明
data[]:遍历顶层data数组中的每个元素?fields[?name=='externalId' && data.externalId=='2720135']:过滤出满足以下条件的data元素:- 自身
fields数组中存在一个条目,其name等于'externalId' - 该条目的
data.externalId值恰好为'2720135'
- 自身
.name:提取符合条件的data元素的name字段| [0]:将结果数组转为单个字符串(若需要保留数组形式可去掉此部分)
测试用JSON数据
{ "data": [ { "id": "f15073f7-c934-479f-bed9-07b6c3402b60", "name": "360 Index", "description": "360 Index", "displayName": "360 Index", "fullName": "360 Index", "type": "Application", "tags": [], "fields": [ { "name": "externalId", "data": { "type": "ExternalId", "externalId": "2720135", "comment": null, "status": "ACTIVE", "externalUrl": null }, "dataType": null } ], "relations": [], "milestones": [], "createdAt": "2022-07-06T19:00:20.202009Z", "updatedAt": "2022-09-21T11:51:45.887413Z", "documents": [], "status": "ACTIVE", "lxState": "BROKEN_QUALITY_SEAL", "level": 1, "qualitySealStatus": "BROKEN", "score": "NaN", "rev": 51, "lxExcludeFromQuota": false, "naFields": [], "subscriptions": [], "permittedReadACL": [], "permittedWriteACL": [] } ], "cursor": "bWl4OjAjRFhGMVpYSjVRVzVrUm1WMFkyZ0JBQUFBQUFCWkN6b1dlamhIYzBSd1pVeFVSUzFCTVdwT2NFZHpTMW95UVE9PSUxNjY0MzYzMTQ5NDM1" }
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

