【发布时间】:2014-12-16 14:02:36
【问题描述】:
目前,我成功地将带有 JQ 的 curl 输出导出到具有有效 json 的文件中。
评论如下:
jsonValues=<curl command> | jq '.["issues"] | map({key: .key, type: .fields.issuetype.name, typeid: .fields.issuetype.id, status: .fields.status.name, summary: .fields.summary})' > FullClosedIssueList.json; `
你可以看到我用这个命令做了两件事:
- 将所有结果放入
jsonValues。 - 导出到
FullClosedIssueList.json。
我发现jsonValues 对象的格式缺失[、] 和,。
{
"key": "ON-12345",
"type": "Bug",
"typeid": "1",
"status": "Closed",
"summary": "Some Bug Title"
}
{
"key": "ON-12346",
"type": "Bug",
"typeid": "1",
"status": "Closed",
"summary": "Some Other Bug Title"
}
而文件输出是有效的 json。
[
{
"key": "ON-12345",
"type": "Bug",
"typeid": "1",
"status": "Closed",
"summary": "Some Bug Title"
},
{
"key": "ON-12346",
"type": "Bug",
"typeid": "1",
"status": "Closed",
"summary": "Some Other Bug Title"
}
]
我需要向 JQ 添加什么命令,以便传递给 bash 变量的对象是有效的 json?
编辑:这与here描述的问题相同
【问题讨论】:
-
你在做
echo $jsonValues还是echo "$jsonValues"?通常,您会希望始终对变量进行 dbl-quote。祝你好运。 -
jsonValues 将被设置为 CURL 命令的输出,字符串“jsonValues=
”将被输入到 jq,这将失败,因为它不是有效的 JSON...如果这是关于 JIRA REST API,应该从 CURL 调用返回有效的 JSON,如:developer.atlassian.com/display/JIRADEV/… -
我很惊讶您在该变量中有 any 值。如果要保存到文件并将输出捕获到变量中,请像这样使用
tee:output=$( some command | tee filename )-- $output 应该与文件具有完全相同的内容 -
@glennjackman 即使我直接从命令行执行
<FullClosedIssueList.json jq '.[] | select(.typeid=="1")' > ClosedBugsList.json,我也会遇到同样的问题。输出文件已删除以下内容:[、]和,。 -
你也需要"map"命令,其中选择命令应该包含在`