缺少键时如何使jq输出逗号分隔

How to make jq output comma separated when key is absent

我正在尝试从下面的 json 文件中以逗号分隔值获取消息字段

[
   {
      "title":"second bad commit",
      "message":"second bad commit"
   },
   {
      "title":"first bad commit",
      "message":"first bad commit",
   }
]

我尝试用 jq 做到这一点:jq -r '.message | join(",")'

它不断抛出以下错误: jq: error (at <stdin>:0): Cannot index array with string "message"

那么,当键不存在时,如何使 jq 输出逗号分隔

假设你的数据实际上是:

[
   {
      "title":"second bad commit",
      "message":"second bad commit"
   },
   {
      "title":"first bad commit",
      "message":"first bad commit"
   }
]

然后您需要使用 map 映射每个值:

$ jq 'map(.message)'           
[
  "second bad commit",
  "first bad commit"
]

然后是连接管道:

$ jq 'map(.message) | join(",")'
"second bad commit,first bad commit"

然后加上-r输出原始值。:

$ jq -r 'map(.message) | join(",")'
second bad commit,first bad commit