更新时间:2022-09-19 10:24:16 来源:极悦 浏览1054次
如何通过jq获取父元素值?极悦小编来给大家举例说明。
代码:
{
"endpointAgents":[
{
"agentId": "MyId",
"agentName": "MYNAME",
"location": {
"locationName": "location"
},
"clients": [
{
"userProfile": {
"userName": "Name"
},
"browserExtensions": [
{
"active": false
}
]
},
],
"totalMemory": "16222 MB",
"agentType": "enterprise"
}
需要返回值为userName的agentId值。知道如何使用 JSONPath,但不知道jq如何。
($.endpointAgents[?(@.clients.userName=~ 'a')].agentId)
假设输入 JSON 是
{
"endpointAgents": [
{
"agentId": "MyId",
"agentName": "MYNAME",
"location": {
"locationName": "location"
},
"clients": [
{
"userProfile": {
"userName": "Name"
},
"browserExtensions": [
{
"active": false
}
]
}
],
"totalMemory": "16222 MB",
"agentType": "enterprise"
}
]
}
要从数组的所有项中获取agentId值,其中在同一个对象中,数组中至少有一个对象具有包含给定子字符串的字符串值,可以选择endpointAgentsclientsuserProfile.userName
jq -r '
.endpointAgents[]
| select(.clients | map(.userProfile.userName | contains("a")) | any)
| .agentId
'
MyId
为了从 jq 外部导入查询字符串,请使用--arg参数
jq -r --arg query "a" ' … contains($query) … '
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习