在node.js中是否需要json

问题描述 投票:199回答:5

我想在我的JavaScript代码中包含几个JSON文件,这些文件与我的JavaScript源文件位于同一目录中。

如果我想要包含另一个JavaScript文件,我可以简单地使用require。现在我正在使用readFileSync__dirname来获取JSON,我认为这是一种丑陋的方式。

是否有类似的要求,使我能够加载JSON文件?

json node.js require
5个回答
381
投票

从节点v0.5.x开始,您可以像需要js文件那样需要JSON。

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

在ES6中:

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


25
投票

JSON文件不需要显式的export语句。您无需导出即可将其用作Javascript文件。

因此,您只需使用require作为有效的JSON文档。

data.json

{
  "name": "Freddie Mercury"
}

main.js

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

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

19
投票

不可以。使用readFilereadFileSync(后者仅在启动时)。

或者使用现有的库

或者在js文件中编写配置,而不是像json文件

module.exports = {
  // json
}

6
投票

两个最常见的

第一种方式:

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

let jsonData = require('./JsonFile') //如果我们省略.json也有效

要么

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

第二种方式:

1)同步

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

2)异步

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

  jsonData = JSON.parse(data)
})

注意:1)如果我们JsonFile.json被更改,我们就不会获得新数据,即使我们重新运行require('./ JsonFile.json')

2)fs.readFile或fs.readFileSync将始终重新读取文件,并获得更改


2
投票

您甚至可以使用JSON的require而不指定扩展名.json。它允许您将文件扩展名更改为.js,而不会对导入进行任何更改。

假设我们在同一目录中有./myJsonFile.json。

const data = require('./myJsonFile')

如果将来你将./myJsonFile.json更改为./myJsonFile.js,则导入中不应更改任何内容。

© www.soinside.com 2019 - 2024. All rights reserved.