当尝试选择该数组的元素时,我正在按照在线示例进行操作,但发生了非常奇怪的事情。
当我跑步时
.issuesData.issues[]
它按预期显示数组。很好。
然后我尝试仅选择带有
statusId == 10270
的节点。正如预期的结果,这将给我最后一个节点。
但结果是 2 个对象的数组,所有元素都分配有
statusId = 10270
。
.issuesData.issues[].statusId="10270"
如果我尝试类似的稍微不同的方法
.issuesData.issues[].statusId=="10270"
我得到一个数组
false
true
这是有道理的,因为只有第二个元素符合他的标准。但我想要得到的只是元素本身或者至少是“关键” JSON 对象如下所示。
{
"issuesData": {
"issues": [
{
"id": 3619364,
"key": "AIG-1992",
"hidden": false,
"typeId": "1",
"summary": "XXXXXX",
"priorityId": "2",
"done": false,
"assignee": "XXXX",
"assigneeName": "XXXX",
"hasCustomUserAvatar": false,
"autoUserAvatar": {
"letter": "B",
"color": "#d39c3f"
},
"color": "#ff0000",
"epicId": "3557134",
"epic": "AIG-1",
"estimateStatisticRequired": false,
"statusId": "10370",
"fixVersions": [
120044
],
"projectId": 49202
},
{
"id": 3617950,
"key": "AIG-1938",
"hidden": false,
"typeId": "1",
"summary": "YYYYYY",
"priorityId": "2",
"done": false,
"assignee": "YYYY",
"assigneeName": "YYY",
"hasCustomUserAvatar": false,
"autoUserAvatar": {
"letter": "F",
"color": "#7bc1a1"
},
"color": "#ff0000",
"epicId": "3658470",
"epic": "AIG-574",
"estimateStatisticRequired": false,
"statusId": "10270",
"fixVersions": [],
"projectId": 49202
}
]
}
}
我在这里做错了什么?
假设您想要一个具有字符串值的键的对象流
"10270"
:
.issuesData.issues[] | select(.statusId == "10270")
假设您想要一个包含所有匹配对象的数组:
.issuesData.issues | map(select(.statusId == "10270"))
假设您想修改原始结构以仅保留匹配的对象:
.issuesData.issues |= map(select(.statusId == "10270"))
如果您只想要具有指定 statusId 的对象的 id:
.issuesData.issues[] | select(.statusId == "10270").id
如果您需要 JSON 数组形式的 ids:
.issuesData.issues | map(select(.statusId == "10270").id)