从 JSON 生成 csv 文件
Generate csv files from a JSON
不幸的是,我很难从一种 json 格式生成三个 csv 文件。也许有人很好地暗示了我该怎么做。谢谢
这是输出。在 dropped1
和 dropped2
中可以有多个不同的地址。
{
"result": {
"found": 0,
"dropped1": {
"address10": 1140
},
"rates": {
"total": {
"1min": 3579,
"5min": 1593,
"15min": 5312,
"60min": 1328
},
"dropped2": {
"address20": {
"1min": 9139,
"5min": 8355,
"15min": 2785,
"60min": 8196
}
}
},
"connections": 1
},
"id": "whatever",
"jsonrpc": "2.0"
}
3 个 csv 文件应以这种形式显示。
address10,1140
total,3579,1593,5312,1328
address20,9139,8355,2785,8196
你试过使用这个库吗?
https://www.npmjs.com/package/json-to-csv-stream
npm i json-to-csv-stream
如果您决定使用 jq,除非有某些特定原因不这样做,否则我建议为三个输出文件中的每一个调用一次 jq。这三个调用将如下所示:
jq -r '.result.dropped1 | [to_entries[][]] | @csv' > 1.csv
jq -r '.result.rates.total | ["total", .["1min"], .["5min"], .["15min"], .["60min"]] | @csv' > 2.csv
jq -r '.result.rates.dropped2
| to_entries[]
| [.key] + ( .value | [ .["1min"], .["5min"], .["15min"], .["60min"]] )
| @csv
' > 3.csv
如果您可以确定 total
和 address20
对象中键的顺序是固定的并且顺序正确,那么最后两次调用就可以简化。
不幸的是,我很难从一种 json 格式生成三个 csv 文件。也许有人很好地暗示了我该怎么做。谢谢
这是输出。在 dropped1
和 dropped2
中可以有多个不同的地址。
{
"result": {
"found": 0,
"dropped1": {
"address10": 1140
},
"rates": {
"total": {
"1min": 3579,
"5min": 1593,
"15min": 5312,
"60min": 1328
},
"dropped2": {
"address20": {
"1min": 9139,
"5min": 8355,
"15min": 2785,
"60min": 8196
}
}
},
"connections": 1
},
"id": "whatever",
"jsonrpc": "2.0"
}
3 个 csv 文件应以这种形式显示。
address10,1140
total,3579,1593,5312,1328
address20,9139,8355,2785,8196
你试过使用这个库吗? https://www.npmjs.com/package/json-to-csv-stream
npm i json-to-csv-stream
如果您决定使用 jq,除非有某些特定原因不这样做,否则我建议为三个输出文件中的每一个调用一次 jq。这三个调用将如下所示:
jq -r '.result.dropped1 | [to_entries[][]] | @csv' > 1.csv
jq -r '.result.rates.total | ["total", .["1min"], .["5min"], .["15min"], .["60min"]] | @csv' > 2.csv
jq -r '.result.rates.dropped2
| to_entries[]
| [.key] + ( .value | [ .["1min"], .["5min"], .["15min"], .["60min"]] )
| @csv
' > 3.csv
如果您可以确定 total
和 address20
对象中键的顺序是固定的并且顺序正确,那么最后两次调用就可以简化。