NodeJS:从 JSON 中提取数据,修改对象并将其发送回同一个 JSON 文件

Posted

技术标签:

【中文标题】NodeJS:从 JSON 中提取数据,修改对象并将其发送回同一个 JSON 文件【英文标题】:NodeJS: Pulling data from JSON,modifying and Sending object back to the same JSON file 【发布时间】:2020-12-10 16:30:31 【问题描述】:

JSON、NodeJs 等的新手。

我希望将以下 JSON 文件数据接收到 NodeJS(和 Angular)项目修改接收到的数据,然后将其发送回 JSON 文件。

JSON 文件:


    "groups":
        "groupid": [1,2,3],
        "name": ["g1","g2","g3"]
    ,
    "rooms": 
        "room1": 
            "roomid": 1,
            "pGroup": ["g1","g2","g3"]
        ,
        "room2": 
            "roomid": 2,
            "pGroup": ["g3"]
        ,
        "room3": 
            "roomid": 3,
            "pGroup": ["g1","g2"]
        
    
 

我可以通过执行以下操作来接收和存储数据:


        // Load in groups from groups.json

        fs.readFile('./data/groups.json', 'utf8', function(err, data)
            if (err) throw err;
            groups = [];
            let gArray = [];
            gArray = JSON.parse(data);
            console.log(gArray.groups.name[1]);
            for(let i = 0; i < gArray.groups.name.length; i++)
                groups.push(gArray.groups.name[i]);

                       
        );

我目前用来存储数据的东西:

                groups.push(newgroup);
                //store room in JSON file
                let groupString = JSON.stringify(groups);
                fs.writeFile('data/groups.json', groupString, 'utf-8', function(err)
                    if (err) throw err;
                );

我知道上面将它放入一个字符串并存储数组,但我尝试寻找一种替代方法,我可以只编辑我需要的 JSON 文件的部分,但我找不到答案任何地方。

任何帮助都将不胜感激。

谢谢

【问题讨论】:

【参考方案1】:

为了编辑文件的内容,您需要实际写入文件

您总是可以只编辑 json 的属性并将 javascript 对象保存在内存中 ok 的 nodeJS 应用程序,如果它是服务器,只需将内存存储的对象直接发送到客户端,看起来文件是否已更新确实不是,但是当服务器关闭时,不会保存未写入磁盘的更改

如果您想保存进度,您必须写入磁盘(或某种数据库等)

编辑

但是还是有办法做你想做的,其实他很多数据库都在工作,但是对于json可能会复杂一些

基本上是节点中的一个函数,它一次只能读取文件的特定字节

https://***.com/a/23720178/2016831

但真正的方法是使用 fs.open 然后 fs.write(查找)来读取/写入文件的特定字节索引

问题是你怎么知道要写入文件的哪些索引,这是一门关于数据库如何工作等的完整科学,通常二进制更容易,因为它被分成不同的块,每个块都有一些头字节,这些字节引用之前和之后的块的字节索引等,然后你需要读取一个根块,它告诉你要读取的 Uther 块读取等等,直到你找到你为什么要编辑的部分,然后在你这样做之后你需要更新一些其他块,或者有时不一定等查找如何从头开始制作数据库

【讨论】:

以上是关于NodeJS:从 JSON 中提取数据,修改对象并将其发送回同一个 JSON 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何从PostgreSQL json中提取数组

如何从sql中获取nodejs的数据并返回json?

使用应用脚本从大查询数据库中提取 JSON 对象

NodeJS HttpGet 到带有 JSON 响应的 URL

从 MySQL JSON 列中提取 JSON 对象的值作为数组

使用 JavaScript React Native 从 API 的 json 对象中提取数据