关于javascript:使用node.js,如何将JSON文件读取到(服务器)内存中?

Using Node.JS, how do I read a JSON file into (server) memory?

背景

我正在用node.js做一些实验,想从文本文件或.js文件(哪个更好)中读取JSON对象??)进入内存,以便我可以从代码中快速访问该对象。我知道外面有蒙古人、阿尔弗雷德等东西,但这不是我现在需要的。

问题

如何使用javascript/node从文本或JS文件中读取JSON对象并将其读取到服务器内存中?


同步:

1
2
var fs = require('fs');
var obj = JSON.parse(fs.readFileSync('file', 'utf8'));

设置:

1
2
3
4
5
6
var fs = require('fs');
var obj;
fs.readFile('file', 'utf8', function (err, data) {
  if (err) throw err;
  obj = JSON.parse(data);
});


我有一个双向的easiest发现这是只使用你的requireJSON文件的路径。

例如,你有一个suppose下面的JSON文件。

test.json

1
2
3
4
{
 "firstName":"Joe",
 "lastName":"Smith"
}

你可以很容易地加载,然后在你的应用程序使用requireNode.js这

1
2
var config = require('./test.json');
console.log(config.firstName + ' ' + config.lastName);


异步是有原因的!在抛出的石头"米哈伊

此外,这里使用的是异步的代码和版本:

1
2
3
4
5
6
7
8
9
10
11
12
13
// Declare variables
var fs = require('fs'),
    obj

// Read the file and send to the callback
fs.readFile('path/to/file', handleFile)

// Write the callback function
function handleFile(err, data) {
    if (err) throw err
    obj = JSON.parse(data)
    // You can now play with your datas
}


至少在v8.9.1节点,你可以去

var json_data = require('/path/to/local/file.json');

和访问的所有元素的JSON对象。


对8节点可以使用内置的util.promisify()asynchronously读到像这样的文件

1
2
3
4
5
6
7
8
9
10
11
12
const {promisify} = require('util')
const fs = require('fs')
const readFileAsync = promisify(fs.readFile)

readFileAsync(`${__dirname}/my.json`, {encoding: 'utf8'})
  .then(contents => {
    const obj = JSON.parse(contents)
    console.log(obj)
  })
  .catch(error => {
    throw error
  })


https://nodejs.org /区/最新的API - v6.x /文档/ FS FS / fs.html # _ _ ReadFile _ _ _回调选项文件

1
2
3
4
5
6
7
8
9
var fs = require('fs');  

fs.readFile('/etc/passwd', (err, data) => {
  if (err) throw err;
  console.log(data);
});  

// options
fs.readFile('/etc/passwd', 'utf8', callback);

https://nodejs.org /区/最新的API - v6.x /文档/ FS FS / fs.html # _ _ readfilesync _ _选项文件

你可以找到所有的日志文件在文件系统(Node.js的!希望这帮助你!


parseit function(){

1
2
3
4
5
6
7
8
9
10
11
12
13
return new Promise(function(res){
    try{
        var fs = require('fs');
        const dirPath = 'K:\\merge-xml-junit\\xml-results\\master.json';
        fs.readFile(dirPath,'utf8',function(err,data){
            if(err) throw err;
            res(data);
    })}
    catch(err){
        res(err);
    }

})

}

异步函数测试(){

1
2
3
4
jsonData = await parseIt();
var parsedJSON = JSON.parse(jsonData);
var testSuite = parsedJSON['testsuites']['testsuite'];
console.log(testSuite);

}

试验();


如果你正在寻找完整的解决方案,从Relative PathAsyncJSON文件,加载与错误处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  // Global variables
  // Request path module for relative path
    const path = require('path')
  // Request File System Module
   var fs = require('fs');


// GET request for the /list_user page.
router.get('/listUsers', function (req, res) {
   console.log("Got a GET request for list of users");

     // Create a relative path URL
    let reqPath = path.join(__dirname, '../mock/users.json');

    //Read JSON from relative path of this file
    fs.readFile(reqPath , 'utf8', function (err, data) {
        //Handle Error
       if(!err) {
         //Handle Success
          console.log("Success"+data);
         // Parse Data to JSON OR
          var jsonObj = JSON.parse(data)
         //Send back as Response
          res.end( data );
        }else {
           //Handle Error
           res.end("Error:"+err )
        }
   });
})

目录结构:

enter image description here