Node.jsを使って実験していますが、コードからすばやくアクセスできるように、JSONオブジェクトをテキストファイルまたは.jsファイル(どちらが良いですか)からメモリに読み込みたいと思います。私はモンゴ、アルフレッドなどのようなものがそこにあることを認識していますが、それは私が今必要としているものではありません。
JavaScript/Nodeを使用してJSONオブジェクトをテキストファイルまたはjsファイルからサーバーメモリに読み込む方法を教えてください。
同期:
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"
}
その後、require
を使用してnode.jsアプリケーションにこれを簡単にロードできます。
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
})
using node-fs-extra(async 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
https://nodejs.org/dist/latest-v6.x/docs/api/fs.html#fs_fs_readfile_file_options_callback
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/dist/latest-v6.x/docs/api/fs.html#fs_fs_readfilesync_file_options
あなたはファイルシステムのドキュメントでNode.jsのすべての使い方を見つけることができます!
これが助けになることを願っています!
関数parseIt(){
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);
}
})
}
非同期関数test(){
jsonData = await parseIt();
var parsedJSON = JSON.parse(jsonData);
var testSuite = parsedJSON['testsuites']['testsuite'];
console.log(testSuite);
}
テスト();
fs-extra packageを使うのはとても簡単です。
同期:
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)