Node.jsでJSON更新
Node.jsでJSONファイルを更新する方法
前提条件
fs
モジュールを使用すること。- Node.jsがインストールされていること。
- JSONファイルがすでに存在すること。
ステップ
- JSONファイルを読み込む
fs.readFile
メソッドを使用して、JSONファイルを同期的に読み込みます。- 読み込んだデータをJSONオブジェクトに変換します。
const fs = require('fs');
// JSONファイルを読み込む
const data = fs.readFileSync('data.json', 'utf8');
// JSONオブジェクトに変換する
const jsonData = JSON.parse(data);
- 値を更新する
// 例: プロパティ"name"の値を更新する
jsonData.name = "新しい名前";
- 更新されたJSONオブジェクトを書き込む
fs.writeFileSync
メソッドを使用して、更新されたJSONオブジェクトをファイルに書き込みます。- 適切なエンコーディング(通常はUTF-8)を指定します。
// 更新されたJSONオブジェクトを書き込む
fs.writeFileSync('data.json', JSON.stringify(jsonData), 'utf8');
完全なコード例
const fs = require('fs');
// JSONファイルを読み込む
const data = fs.readFileSync('data.json', 'utf8');
// JSONオブジェクトに変換する
const jsonData = JSON.parse(data);
// 値を更新する
jsonData.name = "新しい名前";
// 更新されたJSONオブジェクトを書き込む
fs.writeFileSync('data.json', JSON.stringify(jsonData), 'utf8');
console.log('JSONファイルが更新されました。');
注意点
- JSON形式
JSONファイルの構造が正しいことを確認してください。不正なJSON形式はエラーを引き起こします。 - エラー処理
実際のアプリケーションでは、エラー処理を適切に行う必要があります。 - 同期処理
上記の例では同期処理を使用しています。非同期処理が必要な場合は、fs.readFile
とfs.writeFile
の非同期バージョンを使用してください。
JSONファイルを読み込み、値を更新し、保存する
const fs = require('fs');
// JSONファイルを読み込む
fs.readFile('data.json', 'utf8', (err, data) => {
if (err) throw err;
// JSONオブジェクトに変換する
const jsonData = JSON.parse(data);
// 値を更新する
jsonData.name = "新しい名前";
// 更新されたJSONオブジェクトを書き込む
fs.writeFile('data.json', JSON.stringify(jsonData), 'utf8', (err) => {
if (err) throw err;
console.log('JSONファイルが更新されました。');
});
});
解説
fs
モジュールをインポートします。- 読み込みが成功した場合、JSONオブジェクトに変換します。
- 必要なプロパティの値を更新します。
- 書き込みが成功した場合、メッセージを出力します。
同期処理によるJSONファイルの更新
const fs = require('fs');
// JSONファイルを読み込む
const data = fs.readFileSync('data.json', 'utf8');
// JSONオブジェクトに変換する
const jsonData = JSON.parse(data);
// 値を更新する
jsonData.name = "新しい名前";
// 更新されたJSONオブジェクトを書き込む
fs.writeFileSync('data.json', JSON.stringify(jsonData), 'utf8');
console.log('JSONファイルが更新されました。');
- メッセージを出力します。
Promiseによる非同期処理
const fs = require('fs');
const util = require('util');
const readFileAsync = util.promisify(fs.readFile);
const writeFileAsync = util.promisify(fs.writeFile);
async function updateJSON() {
try {
const data = await readFileAsync('data.json', 'utf8');
const jsonData = JSON.parse(data);
jsonData.name = "新しい名前";
await writeFileAsync('data.json', JSON.stringify(jsonData), 'utf8');
console.log('JSONファイルが更新されました。');
} catch (err) {
console.error('エラーが発生しました:', err);
}
}
updateJSON();
async/await
構文を使用して、非同期処理を同期的なスタイルで記述します。util.promisify
を使用して、fs.readFile
とfs.writeFile
をPromiseに変換します。
async/awaitとfs.promises
const { promises: fs } = require('fs');
async function updateJSON() {
try {
const data = await fs.readFile('data.json', 'utf8');
const jsonData = JSON.parse(data);
jsonData.name = "新しい名前";
await fs.writeFile('data.json', JSON.stringify(jsonData), 'utf8');
console.log('JSONファイルが更新されました。');
} catch (err) {
console.error('エラーが発生しました:', err);
}
}
updateJSON();
fs.promises
オブジェクトを使用して、Promiseベースのファイル操作メソッドにアクセスします。
JSONファイル専用のライブラリ
const jsonfile = require('jsonfile');
async function updateJSON() {
try {
const jsonData = await jsonfile.readFile('data.json');
jsonData.name = "新しい名前";
await jsonfile.writeFile('data.json', jsonData);
console.log('JSONファイルが更新されました。');
} catch (err) {
console.error('エラーが発生しました:', err);
}
}
updateJSON();
jsonfile
ライブラリを使用すると、JSONファイルの読み書きをより簡単に扱うことができます。
json node.js