我有一个像这样的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
)。
答案 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 祝你好运!