Analizando JSON con Node.js

Cómo analizar JSON desde una cadena y cómo leer un archivo JSON en Node.js

Si usted tieneJSONdatos como parte de una cadena, la mejor manera de analizarlos es utilizando elJSON.parsemétodo que forma parte del estándar JavaScript desde ECMAScript 5, y lo proporcionaV8, el motor de JavaScript que impulsaNode.js.

Ejemplo:

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

Tenga en cuenta queJSON.parsees sincrónico, por lo que cuanto más grande sea el archivo JSON, más tiempo se bloqueará la ejecución de su programa hasta que el JSON termine de analizar.

Puede procesar el JSON de forma asincrónica envolviéndolo en unpromesay una llamada setTimeout, que asegura que el análisis se lleve a cabo en la siguiente iteración del bucle de eventos:

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))

Si su JSON está en un archivo, primero debe leerlo.

Una forma muy sencilla de hacerlo es utilizarrequire():

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

Desde que usaste el.jsonextensión,require()es lo suficientemente inteligente como para entender eso y analizar el JSON en eldataobjeto.

Una advertencia es que la lectura de archivos es sincrónica. Además, el resultado de la llamada require () se almacena en caché, por lo que si lo vuelve a llamar porque actualizó el archivo, no obtendrá los nuevos contenidos hasta que el programa salga.

Esta función se proporcionó para usar un archivo JSON para la configuración de la aplicación, y es un caso de uso perfectamente válido.

También puede leer el archivo manualmente, utilizandofs.readFileSync:

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

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

Esto lee el archivo sincrónicamente.

También puede leer el archivo de forma asincrónica usandofs.readFile, y esta es la mejor opción. En este caso, el contenido del archivo se proporciona como una devolución de llamada, y dentro de la devolución de llamada puede procesar el 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) } })

Descarga mi gratisManual de Node.js


Más tutoriales de nodos: