it-swarm.com.de

Wie lese ich mit Node.JS eine JSON-Datei in den (Server-) Speicher?

Hintergrund

Ich mache einige Experimente mit Node.js und möchte ein JSON-Objekt entweder aus einer Textdatei oder einer .js-Datei (was ist besser?) In den Speicher lesen, damit ich über Code schnell auf dieses Objekt zugreifen kann. Mir ist klar, dass es da draußen Dinge wie Mongo, Alfred usw. gibt, aber das ist nicht das, was ich gerade brauche.

Frage

Wie lese ich ein JSON-Objekt mit JavaScript/Node aus einer Text- oder JS-Datei in den Serverspeicher?

530
Matt Cashatt

Synchronisierung:

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

Async:

var fs = require('fs');
var obj;
fs.readFile('file', 'utf8', function (err, data) {
  if (err) throw err;
  obj = JSON.parse(data);
});
1069
mihai

Am einfachsten ist es, wenn Sie require und den Pfad zu Ihrer JSON-Datei verwenden.

Angenommen, Sie haben die folgende JSON-Datei.

test.json

{
  "firstName": "Joe",
  "lastName": "Smith"
}

Sie können dies dann einfach mit require in Ihre node.js-Anwendung laden.

var config = require('./test.json');
console.log(config.firstName + ' ' + config.lastName);
359
Travis Tidwell

Asynchron gibt es nicht ohne Grund! Wirft Stein auf @mihai

Ansonsten ist hier der Code, den er mit der asynchronen Version verwendet hat:

// 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
}
56

Zumindest in Node v8.9.1 ist dies nur möglich

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

und greifen Sie auf alle Elemente des JSON-Objekts zu.

35
Alex Eftimiades

In Node 8 können Sie die eingebaute util.promisify() verwenden, um eine Datei wie diese asynchron zu lesen

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
  })
14
J P

mit 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
2
SumanP

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

Sie finden die gesamte Verwendung von Node.js in den Dokumenten zum Dateisystem!
hoffe diese hilfe für dich!

2
xgqfrms

Die Verwendung des fs-extra -Pakets ist ganz einfach:

Synchronisierung:

const fs = require('fs-extra')

const packageObj = fs.readJsonSync('./package.json')
console.log(packageObj.version) 

Async:

const fs = require('fs-extra')

const packageObj = await fs.readJson('./package.json')
console.log(packageObj.version) 
1
Arturo Menchaca

funktion 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);
    }

})

}

asynchroner Funktionstest () {

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

}

prüfung();

1
Satyabrata Saha