【问题标题】:json to csv issue using jq使用 jq 的 json 到 csv 问题
【发布时间】:2020-06-20 03:32:48
【问题描述】:

我根据需要使用jq将下面的json转换为CSV

我的 json 是:

{
    "id": 39,
    "max_x": null,
    "max_y": null,
    "min_x": null,
    "min_y": null,
    "name": "L1",
    "space_count": 159,
    "spaces": [
               {
            "account_name": "Westpac",
            "ext_ids": [
                "5d6043ce3b1a6903ba000021",
                "5d6043ce3b1a6903ba000022"
            ],
            "gla": 232,
            "gross_rent": 493565.04000000004,
            "id": 8955,
            "lease_end_time": "2021-09-15T00:00:00.000Z",
            "map_unit_no": "GD030A",
            "mat_excl_gst": 0,
            "mat_growth_rate": null,
            "mat_month": "January-2020",
            "net_rent": 337459.2,
            "unit_no": "030A",
            "vertices": [
            ]
        }
    ],
    "svg": null
}

我尝试通过在终端中使用此代码转换为 CSV:

cat data1.json | jq -r '.spaces[] | [.account_name,.ext_ids[]] | @csv' | tr -d '"' >> output.csv

结果是:

Westpac,5d6043ce3b1a6903ba000021,5d6043ce3b1a6903ba000022

但我需要得到这个结果:

Westpac,5d6043ce3b1a6903ba000021
Westpac,5d6043ce3b1a6903ba000022

你能指导我吗?

【问题讨论】:

    标签: json export-to-csv jq


    【解决方案1】:

    以下是 JQ 手册中关于为什么会发生这种情况的简要说明。

    表达式[1,2,3] 没有使用逗号分隔数组的内置语法,而是将[] 运算符(收集结果)应用于表达式1,2,3(产生三个不同的结果)。

    使用变量可以规避这个问题。

    .spaces[] | .ext_ids[] as $e | [.account_name, $e] | @csv
    

    【讨论】:

      猜你喜欢
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 2020-06-25
      • 1970-01-01
      • 1970-01-01
      • 2015-06-22
      • 2020-09-23
      相关资源
      最近更新 更多