我正在弄清楚如何创建一个高级脚本来生成包含循环内容的 JSON 文件。
我有一个简单的 .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 文件的内容中添加城市。
异常输出将在这些屏幕截图中:
每个 JSON 文件都应该包含城市列表,看看这个 JSON 格式。
我有脚本,但它坏了,我无法研究,已经有 5 个小时了。
欢迎提出建议
避免重命名错误,在这种情况下使用 .replace(//g, '-')
将空格替换为“-”
编辑:我清理了意大利面条代码,我找不到我最好的代码,但我认为那是
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,没有任何其他东西。随着你的输入,它给出了这个:
这是 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');
关于javascript - 在 Node.js 中高级编写文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34516648/