我正在弄清楚如何创建一个高级脚本来生成包含循环内容的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", '');
});
答案 0 :(得分:1)
试试这个:
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');