如何用jq连接数组元素
How to join array elements with jq
我正在尝试从 json 输出中以特定格式生成 .csv。 JSON如下:
{
"expand": "names,schema",
"startAt": 0,
"maxResults": 50,
"total": 1,
"issues": [
{
"expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields",
"id": "42202",
"self": "https://www.myjira.com/jira/rest/api/2/issue/42202",
"key": "JIRAISSUE-369",
"fields": {
"fixVersions": [
{
"self": "https://www.myjira.com/jira/rest/api/2/version/15701",
"id": "15701",
"name": "MR1",
"archived": false,
"released": false,
"releaseDate": "2014-06-10"
},
{
"self": "https://www.myjira.com/jira/rest/api/2/version/15702",
"id": "15702",
"name": "MR2",
"archived": false,
"released": false,
"releaseDate": "2014-04-14"
}
],
"status": {
"self": "https://www.myjira.com/jira/rest/api/2/status/3",
"description": "This issue is being actively worked on at the moment by the assignee.",
"iconUrl": "https://www.myjira.com/jira/images/icons/statuses/inprogress.png",
"name": "In Progress",
"id": "3",
"statusCategory": {
"self": "https://www.myjira.com/jira/rest/api/2/statuscategory/4",
"id": 4,
"key": "indeterminate",
"colorName": "yellow",
"name": "In Progress"
}
}
}
}
]
}
我想要一个以逗号分隔的列表,其中 fixVersions 的元素以逗号分隔。我已经走到这一步了。
curl -X GET -H "Content-Type: application/json" -k "https://www.myjira.com/jira/rest/api/2/search?jql=filter%3D60100&fields=key,status,fixVersions" -u user1 | jq -r '.issues[] | .key + "," + .fields.status.name + "," + .fields.fixVersions[].name'
输出:
JIRAISSUE-369,In Progress,MR1
JIRAISSUE-369,In Progress,MR2
期望的输出:
JIRAISSUE-369,In Progress,MR1,MR2
如何将每个 .issues.fixVersions[].name 和末尾的逗号分隔开?
可以使用join()
如
jq '.issues[] | [.key , .fields.status.name , .fields.fixVersions[].name] | join(",")'
Try it online!
我正在尝试从 json 输出中以特定格式生成 .csv。 JSON如下:
{
"expand": "names,schema",
"startAt": 0,
"maxResults": 50,
"total": 1,
"issues": [
{
"expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields",
"id": "42202",
"self": "https://www.myjira.com/jira/rest/api/2/issue/42202",
"key": "JIRAISSUE-369",
"fields": {
"fixVersions": [
{
"self": "https://www.myjira.com/jira/rest/api/2/version/15701",
"id": "15701",
"name": "MR1",
"archived": false,
"released": false,
"releaseDate": "2014-06-10"
},
{
"self": "https://www.myjira.com/jira/rest/api/2/version/15702",
"id": "15702",
"name": "MR2",
"archived": false,
"released": false,
"releaseDate": "2014-04-14"
}
],
"status": {
"self": "https://www.myjira.com/jira/rest/api/2/status/3",
"description": "This issue is being actively worked on at the moment by the assignee.",
"iconUrl": "https://www.myjira.com/jira/images/icons/statuses/inprogress.png",
"name": "In Progress",
"id": "3",
"statusCategory": {
"self": "https://www.myjira.com/jira/rest/api/2/statuscategory/4",
"id": 4,
"key": "indeterminate",
"colorName": "yellow",
"name": "In Progress"
}
}
}
}
]
}
我想要一个以逗号分隔的列表,其中 fixVersions 的元素以逗号分隔。我已经走到这一步了。
curl -X GET -H "Content-Type: application/json" -k "https://www.myjira.com/jira/rest/api/2/search?jql=filter%3D60100&fields=key,status,fixVersions" -u user1 | jq -r '.issues[] | .key + "," + .fields.status.name + "," + .fields.fixVersions[].name'
输出:
JIRAISSUE-369,In Progress,MR1
JIRAISSUE-369,In Progress,MR2
期望的输出:
JIRAISSUE-369,In Progress,MR1,MR2
如何将每个 .issues.fixVersions[].name 和末尾的逗号分隔开?
可以使用join()
如
jq '.issues[] | [.key , .fields.status.name , .fields.fixVersions[].name] | join(",")'