javascript - 在 Node.js 中高级编写文件

标签 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", '');
});

最佳答案

试试这个:

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/

相关文章:

javascript - React Context API 和单独的 JS 文件存储用户数据有什么不同?

javascript - 如何通过类名和存储获取页面中的所有链接

javascript - 使用流逐行读取文本文件

javascript - 为什么数组在响应中总是空的?

javascript - 在 react 中使用 'true' 时出现意外的关键字 `useState`?

javascript - 给setState中的属性加上括号[]

带有粘性标题的 JavaScript 库移动

javascript - 如何使用 Angular 访问嵌套的 JSON 数组数据,并按数组参数过滤?

java - com.fasterxml.jackson.core.JsonParseException : Unexpected character ('\' (code 92)) [Java]

javascript - 在初始化时运行程序