使用Node.js读取,转换,编写JSON文件

时间:2017-06-10 14:32:43

标签: node.js

我有一个像这样的JSON文件:

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

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

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

任何指针都受到高度赞赏。

修改
我不是在寻找代码示例。也许关于应该如何做的基本思考过程会很好。我尝试过使用traverse module。由于它使用this.update来更新节点,因此我无法使其与promises一起使用(回调不允许我访问this)。

2 个答案:

答案 0 :(得分:1)

以异步方式执行此操作:

// 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!');
    });
});

答案 1 :(得分:1)

所以这是我的思考过程。 要求 - > 在请求回调内部我会异步读取文件 - > 然后使用JSON.parse修改数据 - > 然后异步写入文件 - > 然后返回一个回复。

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