web-dev-qa-db-fra.com

est-il nécessaire pour json dans node.js

J'aimerais inclure dans mon code JavaScript quelques fichiers JSON qui se trouvent dans le même répertoire que mon fichier source JavaScript.

Si je voulais inclure un autre fichier JavaScript, je pourrais simplement utiliser require. Maintenant, j'utilise readFileSync et __dirname pour obtenir le JSON, ce qui, à mon avis, est un moyen désagréable de le faire.

Y at-il quelque chose de similaire pour require qui me permet de charger un fichier JSON?

206
Coen

À partir de la version v0.5.x, vous pouvez exiger votre JSON exactement comme vous auriez besoin d’un fichier js.

var someObject = require('./somefile.json')

En ES6:

import someObject from ('./somefile.json')

391
goatslacker

Les fichiers JSON ne nécessitent pas d’instruction d’exportation explicite. Vous n'avez pas besoin d'exporter pour l'utiliser comme fichier Javascript.

Vous pouvez donc utiliser uniquement require pour un document JSON valide.

data.json

{
  "name": "Freddie Mercury"
}

main.js

var obj = require('data.json');

console.log(obj.name); 
//Freddie Mercury
26
serkan

Non. Utilisez readFile ou readFileSync (cette dernière uniquement au moment du démarrage).

Ou utilisez une bibliothèque existante comme

Sinon, écrivez votre configuration dans un fichier js plutôt que dans un fichier json comme

module.exports = {
  // json
}
19
Raynos

Deux des plus communs

Première manière:

let jsonData = require('./JsonFile.json')

let jsonData = require('./JsonFile') // si nous omettons .json fonctionne également

OR

import jsonData from ('./JsonFile.json')

Deuxième manière:

1) de manière synchrone

const fs = require('fs')
let jsonData = JSON.parse(fs.readFileSync('JsonFile.json', 'utf-8'))

2) asynchrone

const fs = require('fs')
let jsonData = {}
fs.readFile('JsonFile.json', 'utf-8', (err, data) => {
  if (err) throw err

  jsonData = JSON.parse(data)
})

Remarque: 1) si nous modifions JsonFile.json, nous n’obtenons pas les nouvelles données, même si nous exécutons require ('./ JsonFile.json')

2) fs.readFile ou fs.readFileSync lisent toujours le fichier et obtiennent les modifications.

7
rajmobiapp

Vous pouvez même utiliser requis de votre JSON sans spécifier l'extension . Json . Cela vous permettra de changer l'extension du fichier en . Js sans aucune modification dans vos importations.

en supposant que nous ayons ./ myJsonFile.json dans le même répertoire.

const data = require('./myJsonFile')

Si à l'avenir vous changerez ./ myJsonFile.json en ./ myJsonFile.js rien ne doit être changé lors de l'importation.

2
Igor Litvinovich