如何将JSON对象从POST请求写入/附加到JSON文件?

时间:2019-05-31 13:29:30

标签: javascript node.js json xml rest

我想使用POST请求提供的数据将JSON元素添加到JSON文件。这种已经完成的工作,我只是想不通如何将id添加到数据中,该怎么做?

我尝试了很多,我创建了一个完全新的JSON对象,并尝试将其添加到我的文件中,该对象不起作用,并且我尝试将数据添加到POST请求给定的数据中,如下所示:body + = {“ id “:10};会产生未定义的错误。

这是我处理POST请求的方式:

} else if (req.method === 'POST' && pathname === 'Kunden') {

        res.writeHead(200, {
            'Content-Type' : 'application/json'
        });

        var body = '';
        req.on('data', function(data) {
            body += data;
        });

        req.on('end', function() {

            fs.readFile('Kunden.json', function(err, kundenJSON) {
                if (err) {
                    console.log(err);
                }

                var kunden = JSON.parse([kundenJSON]);
                kunden.kunde.push(JSON.parse(body));
                kundenJSON = JSON.stringify(kunden);

                fs.writeFile('Kunden.json', kundenJSON, function(err) {
                    if(err) {console.log(err);
                    }});
            });

            });
    }

}).listen(8081);

这是我已经准备好的现有JSON文件:

{"kunde":[{"id":1,"name":"Customer1"},{"id":2,"name":"Customer2"},{"id":3,"name":"Customer3"}]}

基本上,我从POST请求中获得“名称”,我必须在其上添加以下ID(在第一个请求中,该ID为4,然后为5,依此类推),然后将其添加到我的文件中。

最后,我的文件应如下所示:

{"kunde":[{"id":1,"name":"Customer1"},{"id":2,"name":"Customer2"},{"id":3,"name":"Customer3"},{"id":4,"name":PostData"}]}

但是我现在只能管理这个:

{"kunde":[{"id":1,"name":"Customer1"},{"id":2,"name":"Customer2"},{"id":3,"name":"Customer3"},{"name":PostData"}]}

1 个答案:

答案 0 :(得分:0)

如果我对您的理解正确,则在将新对象保存到文件时要添加它和id。这基本上很容易,但是您还应该知道如何正确跟踪ID。

var kunden = JSON.parse([kundenJSON]);
var newKunde = JSON.parse(body);
newKunde.id = 4;
kunden.kunde.push(newKunde);
kundenJSON = JSON.stringify(kunden);

我要说的问题是,如何知道新ID?您可以只说newId = kunden.kunde.length + 1-但是如果以后删除一个,则ID将重复。您还需要考虑将来如何处理唯一ID。