Node.jsでrequire()モジュールを使ってJSONファイルを読み込む

2024-04-02

Node.jsでJSONファイルを読み込む方法

require()モジュールを使う

最も簡単な方法は、require()モジュールを使う方法です。

const data = require('./data.json');

// data変数には、JSONファイルの内容がオブジェクトとして格納されます。
console.log(data);

この方法を使う場合は、JSONファイルが同じディレクトリにあるか、パスが正しく設定されている必要があります。

fsモジュールを使う方法は、より柔軟性があります。

const fs = require('fs');

fs.readFile('./data.json', 'utf-8', (err, data) => {
  if (err) throw err;

  // data変数には、JSONファイルの内容が文字列として格納されます。
  const jsonData = JSON.parse(data);

  console.log(jsonData);
});

この方法を使う場合は、ファイルのエンコーディングを指定する必要があります。

非同期処理

上記の例では、require()モジュールとfsモジュールどちらも同期処理でファイルを読み込みます。

同期処理は、ファイルを読み込むまで処理がブロックされます。ファイルサイズが大きい場合や、ネットワーク経由でファイルを読み込む場合は、非同期処理を使うのがおすすめです。

非同期処理には、fs.readFile()の代わりにfs.promises.readFile()を使うことができます。

const fs = require('fs');

(async () => {
  try {
    const data = await fs.promises.readFile('./data.json', 'utf-8');
    const jsonData = JSON.parse(data);

    console.log(jsonData);
  } catch (err) {
    console.error(err);
  }
})();

Node.jsでJSONファイルを読み込むには、いくつかの方法があります。

それぞれの特徴を理解して、目的に合った方法を選びましょう。




require()モジュールを使う

const data = require('./data.json');

// data変数には、JSONファイルの内容がオブジェクトとして格納されます。
console.log(data);
{
  "name": "John Doe",
  "age": 30,
  "address": {
    "street": "123 Main Street",
    "city": "New York",
    "state": "NY",
    "zip": "10001"
  }
}

このコードを実行すると、次のような出力が得られます。

{
  name: 'John Doe',
  age: 30,
  address: {
    street: '123 Main Street',
    city: 'New York',
    state: 'NY',
    zip: '10001'
  }
}

fsモジュールを使う

const fs = require('fs');

fs.readFile('./data.json', 'utf-8', (err, data) => {
  if (err) throw err;

  // data変数には、JSONファイルの内容が文字列として格納されます。
  const jsonData = JSON.parse(data);

  console.log(jsonData);
});

data.json

{
  "name": "John Doe",
  "age": 30,
  "address": {
    "street": "123 Main Street",
    "city": "New York",
    "state": "NY",
    "zip": "10001"
  }
}
{
  name: 'John Doe',
  age: 30,
  address: {
    street: '123 Main Street',
    city: 'New York',
    state: 'NY',
    zip: '10001'
  }
}

非同期処理

const fs = require('fs');

(async () => {
  try {
    const data = await fs.promises.readFile('./data.json', 'utf-8');
    const jsonData = JSON.parse(data);

    console.log(jsonData);
  } catch (err) {
    console.error(err);
  }
})();
{
  "name": "John Doe",
  "age": 30,
  "address": {
    "street": "123 Main Street",
    "city": "New York",
    "state": "NY",
    "zip": "10001"
  }
}
{
  name: 'John Doe',
  "age": 30,
  "address": {
    "street": "123 Main Street",
    "city": "New York",
    "state": "NY",
    "zip": "10001"
  }
}



Node.jsでJSONファイルを読み込むその他の方法

JSON.parse()を使う方法は、最もシンプルで簡単な方法です。

const data = JSON.parse('{"name": "John Doe", "age": 30}');

// data変数には、JSON文字列の内容がオブジェクトとして格納されます。
console.log(data);

この方法を使う場合は、JSON文字列を直接コードに記述する必要があります。

xml2jsモジュールを使う方法は、XMLファイルからJSONファイルに変換する場合に便利です。

const xml2js = require('xml2js');

const parser = new xml2js.Parser();

parser.parseString('<xml><name>John Doe</name><age>30</age></xml>', (err, result) => {
  if (err) throw err;

  // result変数には、JSONオブジェクトが格納されます。
  console.log(result);
});

この方法を使う場合は、xml2jsモジュールをインストールする必要があります。

const csvParser = require('csv-parser');

const parser = csvParser();

parser.on('data', (data) => {
  // data変数には、JSONオブジェクトが格納されます。
  console.log(data);
});

fs.createReadStream('./data.csv').pipe(parser);

javascript json node.js


大文字と小文字はもう気にしない!JavaScriptで大文字・小文字区別しない検索をマスターしよう

JavaScript で文字列検索を行う際、デフォルトでは大文字と小文字が区別されます。つまり、「JavaScript」と「javascript」は異なる文字列とみなされます。しかし、場合によっては大小文字を区別せずに検索したいことがあります。...


【初心者向け】ウェブページの仕組みを理解しよう!HTML、CSS、JavaScriptの役割とは?

このシーケンスには、主に以下の3つの言語が関わっています。HTML (HyperText Markup Language):ウェブページの構造を定義します。見出し、段落、画像、動画などの配置を記述します。CSS (Cascading Style Sheets):HTMLで定義された要素の見た目を装飾します。フォント、色、配置などを指定します。...


【初心者向け】JavaScript ソースマップでデバッグを楽々!仕組みと使い方を徹底解説

JavaScript ソースマップは、開発者が 変換・最適化 された JavaScript コードと 元のソースコード の間の対応関係を保持するファイルです。コードが圧縮・結合・トランスパイルなどの処理を受けると、元のコードとの関連性が失われてしまいます。ソースマップはこの問題を解決し、デバッグを容易にします。...


React で SVG と PNG 画像を簡単に表示:静的アセットとコンポーネントの使い分け

静的アセットとしてインポートこの方法は、Webpack などを使用して、画像ファイルをバンドルし、JavaScript ファイルに埋め込むものです。手順:画像ファイルをインポート: import image from './image. png';...


ES6 モジュール時代の Node.js 開発におけるファイルパス取得のベストプラクティス

問題点ES6 モジュールでは、モジュールは独自のスコープを持ち、__dirname はモジュールファイルの相対パスを指します。これは、モジュールを別のディレクトリに移動したり、別のモジュールからインポートしたりする場合に問題を引き起こす可能性があります。...


SQL SQL SQL SQL Amazon で見る



XMLHttpRequestとFetch APIを使いこなす

そこで登場したのが非同期通信です。非同期通信は、ユーザーがアクションを起こしてもページ全体を再読み込みすることなく、必要なデータのみをサーバーと通信で取得・更新する技術です。これにより、ユーザー操作のレスポンス向上やページ読み込み時間の短縮を実現できます。