首页 > 解决方案 > 我想将 json 文件列表转换为仅具有特定属性的 csv

问题描述

我有 1000 个奇怪的 json 文件。我想将它们转换为单个 csv 文件。我只想要 csv 文件中的特定属性。

这是示例 json 文件

{
  "id": "90",
  "productName": "XYZ",
  "businessUnit": "",
  "daemon": "MSU",

  "features": [
    {
      "name": "MNQ",
      "count": "10",
      "id": "4"
    },
    {
      "name": "PQR",
      "count": "20",
      "id": "5"
    }
  ]
}

这是示例输出

ProductName,FeatureName, FeatureCount
XYZ,MNQ,10
XYZ,PQR,20

我想从“features”数组中提取以下属性“productName”:“XYZ”。我想将“名称”和“计数”属性提取到 CSV 文件中。

我想将其写入 1000 个奇怪的 JSON 文件并将其写入 CSV 文件。这个怎么做?

标签: jsoncsv

解决方案


使用米勒(https://github.com/johnkerl/miller)并运行

mlr --j2c cut -r -f "(pro|name|count)" then reshape -r "feature" -o k,v then nest --explode --values --across-fields --nested-fs ":" -f k then reshape -s k_3,v then cut -x -r -f "_" input.json >output.csv

你有

+-------------+------+-------+
| productName | name | count |
+-------------+------+-------+
| XYZ         | MNQ  | 10    |
| XYZ         | PQR  | 20    |
+-------------+------+-------+

这是一个命令行实用程序,您可以在附近的每个操作系统中使用。然后你可以做一个简单的for循环并合并所有。


推荐阅读