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发现这是只使用你的
例如,你有一个suppose下面的JSON文件。
test.json
1 2 3 4 | { "firstName":"Joe", "lastName":"Smith" } |
你可以很容易地加载,然后在你的应用程序使用
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节点,你可以去
和访问的所有元素的JSON对象。
对8节点可以使用内置的
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); |
}
试验();
如果你正在寻找完整的解决方案,从
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 ) } }); }) |
目录结构: