배경
Node.js로 실험을하고 있으며 텍스트 파일이나 .js 파일 (더 나은 ??)에서 JSON 객체를 메모리로 읽어 코드에서 빠르게 객체에 액세스 할 수 있습니다. 나는 몽고, 알프레드 등과 같은 것들이 있다는 것을 알고 있지만 그것은 지금 내가 필요한 것이 아닙니다.
질문
JavaScript / 노드를 사용하여 텍스트 나 js 파일에서 서버 메모리로 JSON 객체를 읽으려면 어떻게해야합니까?
답변
동조:
var fs = require('fs');
var obj = JSON.parse(fs.readFileSync('file', 'utf8'));
비동기 :
var fs = require('fs');
var obj;
fs.readFile('file', 'utf8', function (err, data) {
if (err) throw err;
obj = JSON.parse(data);
});
답변
내가 찾은 가장 쉬운 방법은 require
JSON 파일의 경로와 경로를 사용 하는 것입니다.
예를 들어 다음 JSON 파일이 있다고 가정합니다.
test.json
{
"firstName": "Joe",
"lastName": "Smith"
}
그런 다음 이것을 사용하여 node.js 응용 프로그램에 쉽게로드 할 수 있습니다 require
var config = require('./test.json');
console.log(config.firstName + ' ' + config.lastName);
답변
이유가 비동기식입니다! @mihai에서 돌을 던졌습니다.
그렇지 않으면 다음은 비동기 버전에서 사용한 코드입니다.
// 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
}
답변
적어도 Node v8.9.1에서는 할 수 있습니다
var json_data = require('/path/to/local/file.json');
JSON 객체의 모든 요소에 액세스하십시오.
답변
노드 8에서는 내장을 사용하여 다음 util.promisify()
과 같은 파일을 비동기 적으로 읽을 수 있습니다
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
})
답변
하여 노드 FS-여분 (비동기 AWAIT)
const readJsonFile = async () => {
try {
const myJsonObject = await fs.readJson('./my_json_file.json');
console.log(myJsonObject);
} catch (err) {
console.error(err)
}
}
readJsonFile() // prints your json object
답변
사용 FS를-추가 패키지는 매우 간단합니다 :
동조:
const fs = require('fs-extra')
const packageObj = fs.readJsonSync('./package.json')
console.log(packageObj.version)
비동기 :
const fs = require('fs-extra')
const packageObj = await fs.readJson('./package.json')
console.log(packageObj.version)