【问题标题】:Convert JSON file to CSV file using jq使用 jq 将 JSON 文件转换为 CSV 文件
【发布时间】:2021-02-09 13:50:00
【问题描述】:

我有一个名为 myresponse.json 的 JSON 文件。

"status":"CONTENT",
"valid":true,
"success":true,
"failure":false,
"content":{
  "id":0,"resources":[{

  "id":0,"value":52.51742935180664
  },
 {
  "id":1,"value":13.392845153808594
  },
 {
  "id":5,"value":"2021-02-09T13:15:15Z"
  },
 {
  "id":6,"value":20.754192352294922
  }]}}}


"status":"CONTENT",
    "valid":true,
    "success":true,
    "failure":false,
    "content":{
      "id":0,"resources":[{
    
      "id":0,"value":52.51742935180664
      },
     {
      "id":1,"value":13.392845153808594
      },
     {
      "id":5,"value":"2021-02-09T13:15:15Z"
      },
     {
      "id":6,"value":20.754192352294922
      }]}}}

卷曲获得。

我如何使用jq将json转换为csv文件,其中“0,1,5,6”必须是列并且“0,1,5,6”的值必须分别占据每一行csv 文件,如下所示:

  0,1,5,6

  52.51742935180664, 13.392845153808594, "2021-02-09T13:15:15Z", 20.754192352294922
  52.51742935180664, 13.392845153808594, "2021-02-09T13:15:15Z", 20.754192352294922

感谢您的帮助!

【问题讨论】:

  • rxtract 不是有效的 json。
  • 我怎样才能得到一个有效的 json?带有 curl 的脚本 bash 是:while true;做 curl -s -H "Accept: application/json" -H "Content-Type: application/json" 172.17.0.2:8080/api/clients/giammi-VirtualBox/6/0 >> myresponse.json sleep 1s done

标签: json linux csv jq


【解决方案1】:

以下假设输入由问题中所示的有效 JSON 对象流组成。

如果事先知道 .id 的相关值,则生成标题行是微不足道的,考虑到灵活性的解决方案如下:

def oneline:
  .content.resources
  | INDEX(.[]; .id) | map_values(.value);

def emit($keys):
  [.[ $keys[] ]];
  
[0,1,5,6] as $keys
| $keys,
  (inputs | oneline | emit($keys))
| join(",")

由于这依赖于inputs 来读取输入,因此应使用 -r 和 -n 选项调用 jq(例如 jq -rn -f program.jq

使用第一个对象确定相关的 .id 值

如果 .id 的相关值是由流中的第一个 JSON 对象确定的,则上面的 defs 可以与以下内容一起重复使用:


(input | oneline) as $first
| ($first | keys) as $keys
| $keys,
  ($first | emit($keys)),
  (inputs | oneline | emit($keys))
| join(",")

此解决方案将与 jq 的 -r 和 -n 选项一起使用。

【讨论】:

    猜你喜欢
    • 2018-08-20
    • 1970-01-01
    • 2021-05-13
    • 2021-12-05
    • 2019-03-25
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    相关资源
    最近更新 更多