【问题标题】:Add element outside of array to csv output将数组外的元素添加到 csv 输出
【发布时间】:2021-05-28 17:11:45
【问题描述】:

我有一个类似于这个的 JSON 结构:

{
  "results": [
    {
      "title": "Page 1",
      "content": {
        "id": "11111"
      }
    },
    {
      "title": "Page 2",
      "content": {
        "id": "22222"
      }
    },
    {
      "title": "Page 3",
      "content": {
        "id": "33333"
      }
    }
  ],
  "start": 0,
  "limit": 25,
  "size": 3,
  "totalSize": 3,
  "query": "Hello World"
}

我需要的输出是:

"Page 1","11111","Hello World"
"Page 2","22222","Hello World"
"Page 3","33333","Hello World"

我可以通过以下方式从数组中获取元素: cat my.json | jq -r '.results[] | [.title, .content.id] | @csv' 但是如何将数组外部的“查询”元素添加到输出中的每一行?

我尝试了很多选项,但我无法让它发挥作用。

【问题讨论】:

    标签: json export-to-csv jq


    【解决方案1】:

    使用一个小占位符来存储.query的值,并在放入数组时使用它

    .query as $q | .results[] | [.title, .content.id, $q] | @csv
    

    或者将它们放在单独的数组中。 (...) 周围的 .results 路径可确保您不会走到下面的路径并仍然保持在顶级节点路径。

    (.results[] | [.title, .content.id]) + [.query] | @csv
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-11
      • 1970-01-01
      • 2012-03-04
      • 2016-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      相关资源
      最近更新 更多