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?
À 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')
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
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
}
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.
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.