【问题标题】:duplicate headers after convert to csv转换为 csv 后重复的标题
【发布时间】:2022-01-30 10:22:29
【问题描述】:

在json文件中:

{
  "issues": [
    {
      "key": "key_1",
      "component": "my_component",
      "textRange": {
        "startLine": 1,
        "endLine": 11,
        "startOffset": 111,
        "endOffset": 1111
      }
    },
    {
      "key": "key2",
      "component": "my component 2",
      "textRange": {
        "startLine": 2,
        "endLine": 22,
        "startOffset": 222,
        "endOffset": 2222
      }
    },
    {
      "key": "my_key3",
      "component": "my component 3",
      "textRange": {
        "startLine": 548,
        "endLine": 548,
        "startOffset": 14,
        "endOffset": 15
      }
    }
  ]
}

我想转换为 csv 并添加标题。

我试试这个:

jq -r '.issues[] | ["key","component", "textRange"], [.key,.component, .textRange[]] | @csv' test.issues.json

结果:

"key","component","textRange"
"key_1","my_component",1,11,111,1111
"key","component","textRange"
"key2","my component 2",2,22,222,2222
"key","component","textRange"
"my_key3","my component 3",548,548,14,15

为什么标题是重复的?

【问题讨论】:

标签: json csv jq


【解决方案1】:

您正在迭代内创建标题。把它们拉到前面

["key","component", "textRange"],
(.issues[] | [.key,.component, .textRange[]])
| @csv
"key","component","textRange"
"key_1","my_component",1,11,111,1111
"key2","my component 2",2,22,222,2222
"my_key3","my component 3",548,548,14,15

Demo

【讨论】:

  • 你为什么要回答一个众所周知的重复而不是这样关闭它?作为标签的常客,你应该鼓励这样的行为
  • @pmf 我试试这个:jq -r ["key","component", "textRange"], (.issues[] | [.key,.component, .textRange[]]) | @csv test.json 。并得到错误:bash:意外标记附近的语法错误`('
  • @Inian 正如你所看到的,人们有时需要更多的帮助,而不是仅仅指责他们没有进行广泛的搜索或不了解他们失败的根源。
  • @Alexei 您似乎缺少 jq 过滤器周围的引号:jq -r '…'
  • @Inian 然而,OP 在不同的层面上挣扎。人们不同的。对你来说简单的事情可能对其他人来说并不简单(反之亦然)。因此,以尽可能多的方式回答问题(即提供解决方案向其他来源暗示)是我能想象到的最尊重的互动方式。责备某人没有找到与你一样简单的事情,这不是。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-22
  • 1970-01-01
  • 2016-12-03
  • 1970-01-01
  • 2019-09-18
  • 1970-01-01
相关资源
最近更新 更多