Node.js

时间:2015-12-29 18:16:01

标签: javascript json node.js

我正在弄清楚如何创建一个高级脚本来生成包含循环内容的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 format

我有剧本,但它已经坏了,我无法研究,已经有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", '');
});

1 个答案:

答案 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');