首页 > 解决方案 > 如何将 POST 请求中的 json 对象写入/附加到 JSON 文件?

问题描述

我想使用 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 req 中获取“名称”,我必须添加以下 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"}]}

标签: javascriptnode.jsjsonxmlrest

解决方案


如果我对您的理解正确,您希望在将新对象保存到文件时将其添加到新对象中。这基本上很容易,但您还应该知道如何正确跟踪 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。


推荐阅读