【发布时间】:2022-02-06 23:32:41
【问题描述】:
我的 CSV 标题看起来像
| from/email | to/0/email | personalization/0/email/ | personalization/0/data/first_name | personalization/0/data/company_name | personalization/0/data/job_title | template_id |
|---|
输出应该是:
[
{
"from": {
"email": "me@x.com",
"name": "Me"
},
"to": [
{
"email": "mike@x.com"
}
],
"personalization": [
{
"email": "mike@x.com",
"data": {
"first_name": "Mike",
"company_name": "X.com",
"job_title": "Chef"
}
}
],
"template_id": "123456"
},
我试过了
csvjson input.csv output.csv
csvtojson input.csv output.csv
csv2json input.csv output.csv
python3 app.py
import csv
import json
def csv_to_json(csvFilePath, jsonFilePath):
jsonArray = []
#read csv file
with open(csvFilePath, encoding='utf-8') as csvf:
#load csv file data using csv library's dictionary reader
csvReader = csv.DictReader(csvf)
#convert each csv row into python dict
for row in csvReader:
#add this python dict to json array
jsonArray.append(row)
#convert python jsonArray to JSON String and write to file
with open(jsonFilePath, 'w', encoding='utf-8') as jsonf:
jsonString = json.dumps(jsonArray, indent=4)
jsonf.write(jsonString)
csvFilePath = r'outputt1.csv'
jsonFilePath = r'outputt1.json'
csv_to_json(csvFilePath, jsonFilePath)
node app.js
const CSVToJSON = require('csvtojson');
// convert users.csv file to JSON array
CSVToJSON().fromFile('outputt1.csv')
.then(from => {
// from is a JSON array
// log the JSON array
console.log(from);
}).catch(err => {
// log error if any
console.log(err);
});
所有输出都是单行 JSON 的一些变体,没有嵌套。
唯一可行的方法是将其上传到https://www.convertcsv.com/csv-to-json.htm 并手动转换每个文件,但这显然不是解决方案。
我看到一篇推荐 Choetl.Json 用于此目的的帖子,但无法在 mac 上安装它
【问题讨论】:
-
到目前为止你有什么尝试?
-
所以不是
dial-a-coder。 -
我的坏人请看编辑
-
显示表头很好,但需要提供1或2行数据。我们这些想帮助你的人,没有什么可测试的。
-
.from.name 从何而来?这不是标题
标签: python node.js json bash jq