首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >json2csv向一个csv输出多个jsons

json2csv向一个csv输出多个jsons
EN

Stack Overflow用户
提问于 2022-06-11 01:47:14
回答 1查看 224关注 0票数 1

我使用json2csv来转换结构如下的多个json文件

代码语言:javascript
复制
{
  "address": "0xe9f6191596bca549e20431978ee09d3f8db959a9",
  "copyright": "None",
  "created_at": "None"
  ...
}

问题是,我需要将多个json文件放入一个csv文件中。

在我的代码中,我迭代一个散列文件,用该散列调用curl,并将数据输出到json。然后,我使用json2csv将每个json转换为csv。

代码语言:javascript
复制
mkdir -p curl_outs
{ cat hashes.hash; echo; } | while read h; do 
    echo "Downloading $h"
    curl -L https://main.net955305.contentfabric.io/s/main/q/$h/meta/public/nft > curl_outs/$h.json; 
    node index.js $h; 
    json2csv -i curl_outs/$h.json -o main.csv;
done

我使用-o将json输出到csv,但是它只是覆盖了以前的json数据。所以我只剩一排了。

我使用了>>,这会附加到csv文件中。

代码语言:javascript
复制
json2csv -i "curl_outs/${h}.json" >> main.csv

但出于某种原因,它将数据的键附加到csv文件的末尾

我也试过

代码语言:javascript
复制
cat csv_outs/*.csv > main.csv

但是,我得到了相同的输出。

如何将多个json文件附加到一个主csv文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-11 07:01:37

从图像和您的描述中还不完全清楚>>有什么问题,但是看起来可能CSV文件没有尾随行中断,所以在前一个文件的最后一行和列(单元格)的末尾直接追加下一个文件(>>)。

我几乎每天都和CSV打交道,我喜欢GoCSV工具。它的堆栈子命令将做这个名字所暗示的:堆叠多个CSV,一个放在另一个上面。

在您的示例中,您可以下载每个JSON并将其转换为单个(中间) CSV。最后,堆叠所有中间CSV,然后删除所有中间CSV。

代码语言:javascript
复制
mkdir -p curl_outs
{ cat hashes.hash; echo; } | while read h; do 
    echo "Downloading $h"
    curl -L https://main.net955305.contentfabric.io/s/main/q/$h/meta/public/nft > curl_outs/$h.json; 
    node index.js $h; 
    json2csv -i curl_outs/$h.json -o curl_outs/$h.csv;
done

gocsv stack curl_outs/*.csv > main.csv;

# I suggested deleting the intermediate CSVs
# rm curl_outs/*.csv
# ...

我将循环的最后一行改为json2csv -i curl_outs/$h.json -o curl_outs/$h.csv;,以创建前面提到的中间CSV。现在,gocsv的堆栈子命令可以获取中间CSV的列表,并为您提供main.csv。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72581166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档