web-dev-qa-db-ja.com

node.jsにjsonが必要か

私のJavaScriptコードには、私のJavaScriptソースファイルと同じディレクトリにあるJSONファイルをいくつか含めたいと思います。

他のJavaScriptファイルをインクルードしたい場合は、単にrequireを使用できます。今、私はJSONを取得するためにreadFileSync__dirnameを使っています。

JSONファイルをロードできるように、requireに似たようなものはありますか?

199
Coen

ノードv0.5.x以降では、jsファイルが必要になるのと同じようにJSONを必要とすることができます。

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

ES6の場合:

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

378
goatslacker

JSONファイルには明示的なエクスポートステートメントは必要ありません。 Javascriptファイルとして使用するためにエクスポートする必要はありません。

そのため、有効なJSONドキュメントにはrequireだけを使用できます。

data.json

{
  "name": "Freddie Mercury"
}

main.js

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

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

いいえ。readFileまたはreadFileSyncのどちらかを使用します(後者は起動時のみ)。

またはのような既存のライブラリを使う

あるいは、以下のようなjsonファイルではなくjsファイルに設定を書きます。

module.exports = {
  // json
}
18
Raynos

最も一般的な2つ

最初の方法:

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

let jsonData = require('./JsonFile') // .jsonを省略した場合も動作する

OR

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は常にファイルを再読み込みし、変更を加えます。

5
rajmobiapp

拡張子を指定せずにJSONのrequireを使用することもできます。json。インポート内容を変更せずに、ファイル拡張子を。jsに変更できます。

同じディレクトリに./ myJsonFile.jsonがあるとします。

const data = require('./myJsonFile')

将来的に./ myJsonFile.json./ myJsonFile.jsに変更する場合は、インポート時に何も変更しないでください。

2