繁体   English   中英

如何在 bash 脚本中使用 jq 将 json output 写入 CSV 文件?

[英]How to write json output to a CSV file using jq in a bash script?

我有一个来自 API 调用的 JSON 响应,如下所示,我想通过 shell 脚本将其写入 CSV 文件。

JSON 回复:

{
  "maxResults": 50,
  "startAt": 0,
  "isLast": true,
  "values": [
    {
      "id": 1986,
      "startDate": "2020-01-27T20:15:30.094Z",
      "endDate": "2020-02-24T20:15:00.000Z"
    },
    {
      "id": 1987,
      "startDate": "2020-02-24T20:48:40.618Z",
      "endDate": "2020-03-15T20:48:00.000Z"
    },
    {
      "id": 1988,
      "startDate": "2020-03-16T17:46:16.846Z",
      "endDate": "2020-04-24T17:46:00.000Z"
    },
    {
      "id": 1989,
      "startDate": "2020-04-20T17:59:30.920Z",
      "endDate": "2020-06-10T17:59:00.000Z"
    }
  ]
}

CSV 文件应该如下所示

1986,2020-01-27T20:15:30:094Z,2020-02-24T20:15:00:000Z
1987,2020-02-24T20:48:40.618Z,2020-03-15T20:48:00.000Z
1988,2020-03-16T17:46:16.846Z,2020-04-24T17:46:00.000Z
1989,2020-04-20T17:59:30.920Z,2020-06-10T17:59:00.000Z

我试过使用 jq 但无法找出写入 csv 的正确方法

curl -X GET \
    --header 'Authorization: Basic <token>'  \
    --header 'Content-Type: application/json'\
     "$url" | jq -r '[.values[].id, .values[].startDate, .values[].endDate] | @csv ' >> dates.csv

任何输入都会有所帮助。

这可能取决于 api 端点,但您可以在调用 API 时只请求curl -X GET -H "Content-Type: text/csv" 'https://some.api.endpoint.com/api/request.csv'这样您就可以获得 CSV 响应,而不必自己进行转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM