问题
I would like to include a couple of JSON files in my JavaScript code that are in the same directory as my JavaScript source file.
If I wanted to include another JavaScript file I could simply use require
.
Now I'm using readFileSync
and __dirname
to get the JSON, which I think is an ugly way to do it.
Is there something similar for require that enables me to load a JSON file?
回答1:
As of node v0.5.x yes you can require your JSON just as you would require a js file.
var someObject = require('./somefile.json')
In ES6:
import someObject from ('./somefile.json')
回答2:
JSON files don’t require an explicit exports statement. You don't need to export to use it as Javascript files.
So, you can use just require
for valid JSON document.
data.json
{
"name": "Freddie Mercury"
}
main.js
var obj = require('data.json');
console.log(obj.name);
//Freddie Mercury
回答3:
No. Either use readFile
or readFileSync
(The latter only at startup time).
Or use an existing library like
- cjson
Alternatively write your config in a js file rather then a json file like
module.exports = {
// json
}
回答4:
Two of the most common
First way :
let jsonData = require('./JsonFile.json')
let jsonData = require('./JsonFile')
// if we omitting .json also works
OR
import jsonData from ('./JsonFile.json')
Second way :
1) synchronously
const fs = require('fs')
let jsonData = JSON.parse(fs.readFileSync('JsonFile.json', 'utf-8'))
2) asynchronously
const fs = require('fs')
let jsonData = {}
fs.readFile('JsonFile.json', 'utf-8', (err, data) => {
if (err) throw err
jsonData = JSON.parse(data)
})
Note: 1) if we JsonFile.json is changed, we not get the new data, even if we re run require('./JsonFile.json')
2) The fs.readFile or fs.readFileSync will always re read the file, and get changes
回答5:
You even can use require of your JSON without specifying the extension .json. It will let you change the file extension to .js without any changes in your imports.
assuming we have ./myJsonFile.json in the same directory.
const data = require('./myJsonFile')
If in the future you'll change ./myJsonFile.json to ./myJsonFile.js nothing should be changed in the import.
来源:https://stackoverflow.com/questions/7163061/is-there-a-require-for-json-in-node-js