在Node.js中高级写入文件

我正在搞清楚如何创build一个高级的脚本来生成循环内容的JSON文件。

我有一个简单的.csv文件,如下图所示:

CSV

列A是县列表,列b是城市列表,在该行中可以是父列。

原始格式:

Los Angeles,"Los Angeles, Santa Monica, Burbank, Commerce" Kern,"California City, Bakersfield, Wasco" Santa Barbara,"Goleta, Santa Barbara, Solvang" Orange,"Anaheim, Costa Mesa, Irvine" 

我需要知道如何编写脚本来生成具有县名称的JSON文件,然后在每个JSON文件的内容中添加城市。

例外输出将在这些屏幕截图中:

OUTPUT1

每个JSON文件都应该包含里面的城市列表,看看这个JSON格式。

json格式

我有脚本,但它已经坏了,我不能研究,已经5个小时了。

任何build议是值得欢迎的

避免重命名错误,在这种情况下,使用.replace(/ /g, '-')从空格replace为“ – ”

编辑:我清理意大利面代码,我找不到我最好的,但我认为多数民众赞成在

 var lr = require('readline').createInterface({ input: require('fs').createReadStream('source/counties.csv') }); lr.on('line', function (line) { var names = rawFile.responseText.split("\n") names.forEach(function(name) { list.push({city: capitalizeFirstLetter(city), colony:name.replace(/(\r\n|\n|\r)/gm,"")}); }) console.log(JSON.stringify(list)); var fileName = selected.replace(/ /g, '-').toLowerCase(); fs.writeFileSync(fileName + ".json", ''); }); 

尝试这个:

 var fs = require('fs'); function writeToFiles(input) { fs.readFile(input, function (err, data) { if (err) throw err; data = data.toString(); data.split('\n').forEach(function (line) { var parsed = line.split(/([\w ]+),"([\w ,]+)"/).filter(function (e) { return !!e; }); var countryName = parsed[0]; var cities = parsed[1]; var cityArray = eval("['" + cities.split(",").join("', '") + "']"); var result = []; cityArray.forEach(function (e) { result.push({ country: countryName, city: e.trim() }); }); fs.writeFileSync('./' + countryName.replace(/[ ]/g, '-') + '.json', JSON.stringify(result, null, 4)); }); }); } 

它使用纯粹的NodeJS,没有别的。 随着你的input,它给出了这个:

这是Los-Angeles.json

 [ { "country": "Los Angeles", "city": "Los Angeles" }, { "country": "Los Angeles", "city": "Santa Monica" }, { "country": "Los Angeles", "city": "Burbank" }, { "country": "Los Angeles", "city": "Commerce" } ] 

要使用它,请执行以下操作:

 writeToFiles('input.csv');