Node.jsを使用したJSONの解析

文字列からJSONを解析する方法、およびNode.jsでJSONファイルを読み取る方法

あなたが持っている場合JSON文字列の一部としてのデータ、それを解析する最良の方法は、JSON.parseECMAScript 5以降のJavaScript標準の一部であり、によって提供されているメソッドV8、強力なJavaScriptエンジンNode.js

例:

const data = '{ "name": "Flavio", "age": 35 }'
try {
  const user = JSON.parse(data)
} catch(err) {
  console.error(err)
}

ご了承くださいJSON.parseは同期であるため、JSONファイルが大きいほど、JSONの解析が完了するまでプログラムの実行がブロックされる時間が長くなります。

JSONをでラップすることにより、JSONを非同期的に処理できます。約束するそしてsetTimeout呼び出しは、イベントループの次の反復で解析が行われることを確認します。

const parseJsonAsync = (jsonString) => {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(JSON.parse(jsonString))
    })
  })
}

const data = ‘{ “name”: “Flavio”, “age”: 35 }’ parseJsonAsync(data).then(jsonData => console.log(jsonData))

代わりにJSONがファイルにある場合は、最初にそれを読み取る必要があります。

そのための非常に簡単な方法は、require()

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

あなたが使用したので.json拡張、require()それを理解するのに十分賢く、JSONを解析しますdataオブジェクト。

注意点の1つは、ファイルの読み取りが同期していることです。さらに、require()呼び出しの結果はキャッシュされるため、ファイルを更新したために再度呼び出すと、プログラムが終了するまで新しいコンテンツを取得できません。

この機能は、アプリの構成にJSONファイルを使用するために提供されたものであり、完全に有効なユースケースです。

を使用してファイルを手動で読み取ることもできますfs.readFileSync

const fs = require('fs')
const fileContents = fs.readFileSync('./file.json', 'utf8')

try { const data = JSON.parse(fileContents) } catch(err) { console.error(err) }

これにより、ファイルが同期的に読み取られます。

を使用してファイルを非同期で読み取ることもできますfs.readFile、これが最良のオプションです。この場合、ファイルの内容はコールバックとして提供され、コールバック内でJSONを処理できます。

const fs = require('fs')

fs.readFile(’/path/to/file.json’, ‘utf8’, (err, fileContents) => { if (err) { console.error(err) return } try { const data = JSON.parse(fileContents) } catch(err) { console.error(err) } })

私の無料ダウンロードNode.jsハンドブック


その他のノードチュートリアル: