阅读,转换,使用写JSON文件的Node.js

问题描述:

我有一个JSON文件,如下所示:阅读,转换,使用写JSON文件的Node.js

{ 
    key1: "value1", 
    key2: "value2", 
    key3: { 
    key3_1: "value3_1", 
    key3_2: "value3_2" 
    } 
} 

我想在适当的时候使用Node.js的读取JSON文件,转换值的键并在转换完成后将生成的JSON写入文件。这里面临的挑战是价值转换通常需要几毫秒(这是一个Web请求/响应流程)。

由于Node.js的异步特性,我无法考虑正确的做法。

任何指针,非常感谢。

编辑
我在这里找不到代码示例。也许一个基本的思考过程应该如何完成会很好。我曾尝试使用traversemodule。由于它使用this.update更新节点,因此我无法使其与承诺一起工作(回调不允许我访问this)。

+0

你有什么尝试,你卡在哪里?这里提出的更好的问题是研究这个话题,尝试实现一个解决方案,只有当您遇到问题时才会发布,并且需要针对您编写代码的特定问题提供帮助,而不仅仅是要求我们从头开始为您编写代码,根本就是你的一部分。 – jfriend00

+0

你判断得太快!我不是要求“代码”......而仅仅是指针会做。我对Node.js比较陌生,实际上我没有想到它的正确编码方式。我以积极的精神征求您的意见。不过,如果您会跟踪指针,我会很感激。 –

+0

你看过nodejs中的'fs'模块吗?这就是你用nodejs读取文件的地方。你在那里学到了什么?当你试图用这些功能之一读取文件时,你从哪里陷入困境?对于我的评论的直接性,我感到很抱歉,但是您的问题显示没有证据显示您自己将其用于研究此主题的任何努力。遍历模块在我看来似乎与您描述的问题没有任何关系。在完成回调中读取文件,解析数据,修改数据,将其转换回字符串,然后将其写出。而已。 – jfriend00

为了异步做到这一点:

// Import fs module 
const fs = require('fs'); 
// Read the source file. 
fs.readFile('source.json', (err, json) => { 
    // Check for error 
    if(err) { 
    console.log(err); 
    } 
    else { 
    // Note that data is a Buffer, convert to string before parsing 
    var data = JSON.parse(data.toString()); 
    // Modify the data. 
    var result = {}; 
    for(var key in data) { 
     var value = data[key]; 
     result[key] = modify(value); 
    } 
    // Serialize result and write to file 
    fs.writeFile('result.json', JSON.stringify(result), (err) => { 
     if(err) { 
     console.log(err); 
     } 
     else console.log('Done!'); 
    }); 
}); 

因此,这里是我的思维过程。 请求 - > 里面请求回拨我会异步读取文件 - > 然后使用JSON.parse修改数据 - > 然后异步写入文件 - > 然后返回一个响应。

节点文件api被称为fs 祝你好运!