相关疑难解决方法(0)

如何使用jq将任意简单JSON转换为CSV?

使用jq,如何将浅层对象数组的任意JSON编码转换为CSV?

这个网站上有大量的问答,涵盖了对字段进行硬编码的特定数据模型,但是这个问题的答案应该适用于任何JSON,唯一的限制是它是一个具有标量属性的对象数组(没有深/复/子对象,扁平化这些是另一个问题).结果应包含一个标题行,给出字段名称.将优先考虑保留第一个对象的字段顺序的答案,但这不是必需的.结果可以用双引号括起所有单元格,或者只包含那些需要引用的单元格(例如'a,b').

例子

  1. 输入:

    [
        {"code": "NSW", "name": "New South Wales", "level":"state", "country": "AU"},
        {"code": "AB", "name": "Alberta", "level":"province", "country": "CA"},
        {"code": "ABD", "name": "Aberdeenshire", "level":"council area", "country": "GB"},
        {"code": "AK", "name": "Alaska", "level":"state", "country": "US"}
    ]
    
    Run Code Online (Sandbox Code Playgroud)

    可能的输出:

    code,name,level,country
    NSW,New South Wales,state,AU
    AB,Alberta,province,CA
    ABD,Aberdeenshire,council area,GB
    AK,Alaska,state,US
    
    Run Code Online (Sandbox Code Playgroud)

    可能的输出:

    "code","name","level","country"
    "NSW","New South Wales","state","AU"
    "AB","Alberta","province","CA"
    "ABD","Aberdeenshire","council area","GB"
    "AK","Alaska","state","US"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 输入:

    [
        {"name": "bang", "value": "!", "level": 0},
        {"name": "letters", "value": "a,b,c", "level": 0},
        {"name": "letters", "value": "x,y,z", "level": 1},
        {"name": "bang", "value": …
    Run Code Online (Sandbox Code Playgroud)

csv json jq

84
推荐指数
6
解决办法
5万
查看次数

jq:对象不能是 csv 格式的,只能是数组

我是 jq 的新手,我有一个来自 DynamoDB 表的 JSON 文件,我想将其转换为 CSV。这是我的 JSON 文件。

[
    {
        "SnsPublishTime": {
            "S": "2019-07-27T15:07:38.904Z"
        },
        "SESreportingMTA": {
            "S": "dsn; a8-19.smtp-out.amazonses.com"
        },
        "SESMessageType": {
            "S": "Bounce"
        },
        "SESDestinationAddress": {
            "S": "bounce@simulator.amazonses.com"
        },
        "SESMessageId": {
            "S": "0100016c33f91857-600a8e44-c419-4a02-bfd6-7f6908f5969e-000000"
        },
        "SESbounceSummary": {
            "S": "[{\"emailAddress\":\"bounce@simulator.amazonses.com\",\"action\":\"failed\",\"status\":\"5.1.1\",\"diagnosticCode\":\"smtp; 550 5.1.1 user unknown\"}]"
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

如果我运行,我会得到正确的输出

jq -r '.[] ' test.json
Run Code Online (Sandbox Code Playgroud)

但如果我跑

jq -r '.[] |@csv' test.json
Run Code Online (Sandbox Code Playgroud)

然后我收到一个错误:

jq: error (at test.json:22): object ({"SnsPublis...) 不能是 csv 格式,只有数组

如何正确地将此 JSON 转换为 CSV?我尝试了一个多小时的谷歌搜索,但似乎无法弄清楚。

谢谢!

json export-to-csv jq

5
推荐指数
2
解决办法
4680
查看次数

标签 统计

jq ×2

json ×2

csv ×1

export-to-csv ×1