使用jq将json文件对象过滤为单独的json文件

时间:2014-12-16 14:02:36

标签: json bash curl jq

目前我已成功将带有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

所述的问题相同

1 个答案:

答案 0 :(得分:2)

你也需要“map”命令,其中应该包含select命令:

cat FullClosedIssueList.json | jq '.[] | map(select(.typeid=="1"))'