将数据写入空的json文件

时间:2019-05-14 15:51:19

标签: javascript json typescript

首先,我在首次运行之前截断json文件。

在此之后,每次运行我都希望继续附加到json文件中。由于数据为空,因此首次运行时会显示“ SyntaxError:JSON输入意外结束”

    public jsondata = (newdata: string) => {

    var fs = require('fs');

    fs.readFile('output.json', function (err, data) {

       let json:any = [];
            console.log('some data =' + data + '=');

            if(data === '') {
            json = JSON.parse(newdata);
            json.push(newdata);
            }
            else {
            json = JSON.parse(data);
            json.push(newdata);
            }

        fs.writeFile('output.json', JSON.stringify(json, null, 4), (err) => {
            if (err) throw err;
            console.log('The json file has been saved');
        });
    });
}

1 个答案:

答案 0 :(得分:2)

fs.readFile('output.json', 'utf-8', function (err, data) { 
    if (data === '') {
        json.push(newdata);
    }

代替

fs.readFile('output.json', function (err, data) {
    if(data === '') {
        json = JSON.parse(newdata);
        json.push(newdata);
    }

为什么:

如果output.json为空
fs.readFile('output.json', function (err, data) { ... })data<Buffer >而不是''(空字符串)
因此,使用您的代码,if (data === '')总是false
json = JSON.parse(data)生成SyntaxError: Unexpected end of JSON input