json - 数组元素上的 sort_by 给出错误 'Cannot index string with string "key"'
问题描述
我正在尝试通过拉取请求 ID 获取代码扫描的状态,但我无法获取状态的值。json 文件如下所示。
{
"pullRequests": [
{
"key": "11346",
"title": "feature/XXX-Validation",
"branch": "feature/XXX-Validation",
"base": "develop",
"status": {
"qualityGateStatus": "OK",
"bugs": 0,
"vulnerabilities": 0,
"codeSmells": 1
},
"analysisDate": "2020-07-27T14:22:36+0000",
"url": "https://abc/org/_git/repo/pullrequest/11346",
"target": "develop"
},
{
"key": "11151",
"title": "feature/xxx-data",
"branch": "feature/xxx-data",
"base": "develop",
"status": {
"qualityGateStatus": "OK",
"bugs": 0,
"vulnerabilities": 0,
"codeSmells": 0
},
"analysisDate": "2020-07-22T11:11:11+0000",
"url": "https://abc/org/_git/repo/pullrequest/11151",
"target": "develop"
}
]
}
我需要按键值对这个 json 进行排序(因为这是最简单的方法 - 之前我曾尝试按 analysisDate 排序)并获取该键的 qualityGateStatus 值。
我尝试使用此命令首先按 key 或 analysisDate 排序,然后尝试使用 key,但我不断收到错误消息。我想也许该值不是字符串,所以尝试将键映射到数字,但仍然不起作用。
jq: error (at <stdin>:0): Cannot index string with string
尝试的命令:
jq '.pullRequests[] |sort_by(.analysisDate)[-1].key'
jq '.pullRequests[] | sort_by(.key|tonumber)'
错误:
jq:错误(在:0):无法使用字符串“key”索引字符串
解决方案
内置sort_by
接受一个数组作为输入,而不是一个对象流。你需要做:
jq '.pullRequests | sort_by(.key)'
推荐阅读
- ios - EXC_BAD_INSTRUCTION when instantiating a Realm Object
- vagrant - Vagrant 'pre-boot' VM customization error
- postgresql - The database cluster was initialized without USE_FLOAT8_BYVAL but the server was compiled with USE_FLOAT8_BYVAL
- javascript - 如何在反应中使用函数 React.createElement() 编写选择字段
- c# - 如何从 AWS S3 glacier 中查找存档 ID?
- c# - 带有自定义控件的 DataGridTemplateColumn
- java - 无法在 Junit 中自动装配 bean
- powershell - Powershell Compare-Object with Hash 仅通过 $_.SideIndicator 而不是 $_.path $_.hash
- javascript - 在Javascript中的嵌套对象数组中查找目标对象的路径
- typo3 - TYPO3 TCA (V 8.7) 中的翻译选择器