根据键值选择值

时间:2018-03-19 18:12:28

标签: jq

我有以下json输出

{ "metadata": { "guid": "f9787342b-0d3b-45c5-b7a6-f61c2a12de00", "url": "/v2/events/f67a342b-0d3b-45c5-b7a6-f61c2a12de00", "created_at": "2018-03-07T17:15:22Z", "updated_at": "2018-03-07T17:15:22Z" }, "entity": { "type": "audit.app.update", "actor": "ae84a203-921d-41a0-97bf-26679342ef47", "actor_type": "user", "actor_name": "abc@xyz.org", "actor_username": "abc.xyz.org", "actee": "b9dba536-2aae-455d-aadc-8782bd5ee8d5", "actee_type": "app", "actee_name": "knpFileUpload", "timestamp": "2018-03-07T17:15:22Z", "metadata": { "request": { "state": "STARTED" } }, "space_guid": "bcz38b4b-9989-42d2-b6bd-702645e344cf", "organization_guid": "axr09940a-a680-4f54-af30-3abfdb76ea2f" } },

我正在尝试获取updated_at的值,如果actee_type = app。

尝试以下命令

cf curl" / v2 / events?q = space_guid:bcz38b4b-9989-42d2-b6bd-702645e344cf" | jq -r'。[] | select(.ressources []。entity.actor_type ==" app")|的.resources [] metadata.updated_at'

但是收到的错误是无法使用字符串索引编号" ressources"如果我使用

jq -r' select(.ressources []。entity.actor_type ==" app")|的.resources [] metadata.updated_at'

无法迭代null。有人可以建议正确的语法。

TIA

1 个答案:

答案 0 :(得分:0)

示例JSON与问题的其余部分之间存在不匹配,例如: JSON没有名为“ressources”的键,对应于“app”的键是“actee_type”(不是jq过滤器中的“actor_type”)。

基于示例JSON(减去错误的尾随逗号)和声明的查询,相应的jq过滤器将只是:

select (.entity.actee_type=="app")
| .metadata.updated_at

结果(使用-r命令行选项):

2018-03-07T17:15:22Z

更新

根据评论,针对完整JSON的相关查询将如上所述,但前面是.resources[] |