Analizando Json en Node.js

Isaac Tony 30 marzo 2022
Analizando Json en Node.js

En esta sección, aprenderemos a analizar JSON sincrónicamente en Node js. El análisis de datos JSON se puede denominar como el proceso de interpretación de datos JSON en un idioma específico que puede estar utilizando actualmente.

Los datos JSON a menudo se almacenan en pares clave-valor como valores de cadena entre comillas mientras siguen las especificaciones JSON. Los datos JSON recibidos del servidor o devueltos por una API suelen estar en formato de cadena. En este formato sin formato, los datos JSON no son fácilmente legibles ni accesibles y, por lo tanto, deben convertirse a un formato más fácil de usar.

Hay tres formas principales que podemos usar para analizar archivos JSON en Node js. Para archivos locales, es decir, aquellos que residen en el almacenamiento de su computadora local, podemos usar la función require() utilizada para cargar módulos en el entorno Node js. Sin embargo, este método es síncrono, lo que significa que este programa no ejecutará nada más hasta que el archivo actual se haya analizado por completo.

[
    {
      "id": 0,
      "name": "Maribel Andrews"
    },
    {
      "id": 1,
      "name": "Gilliam Mcdonald"
    },
    {
      "id": 2,
      "name": "Lisa Wright"
    }
  ]
const friends  = require("./friends.json");
 
console.log(friends);

Salida de muestra:

[
  { id: 0, name: 'Maribel Andrews' },
  { id: 1, name: 'Gilliam Mcdonald' },
  { id: 2, name: 'Lisa Wright' }
]

Este programa no es adecuado para trabajar con programas dinámicos pero si con archivos estáticos. Los programas que pueden cambiar los datos requerirán que analicemos los datos nuevamente una vez que se haya realizado cualquier cambio. Esta no es la mejor manera de analizar archivos JSON.

Alternativamente, podríamos usar el módulo fs y fs.readFileSync() para cargar el archivo JSON en lugar de cargarlo como un módulo. El módulo fs es una forma más eficiente de realizar operaciones con archivos, como leer archivos, renombrarlos y eliminarlos. El fs.readFileSync() es una interfaz que nos permite leer el archivo y su contenido de forma sincrónica.

[
    {
      "id": 0,
      "name": "Maribel Andrews"
    },
    {
      "id": 1,
      "name": "Gilliam Mcdonald"
    },
    {
      "id": 2,
      "name": "Lisa Wright"
    }
  ]
const fs = require("fs");
 
const friends = fs.readFileSync("./friends.json");
 
 
console.log(friends);

Salida de muestra:

<Buffer 5b 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 22 69 64 22 3a 20 30 2c 0d 0a 20 20 20 20 20 20 22 6e 61 6d 65 22 3a 20 22 4d 61 72 69 62 65 6c 20 41 ... 144 more bytes>

Si bien hemos cargado con éxito el archivo JSON, no hemos especificado el formato de codificación. El método readFileSync() devuelve el búfer sin procesar cuando no se especifica el parámetro de codificación, es decir, cuando es nulo. El formato de codificación de los archivos de texto suele ser utf-8.

const fs = require("fs");
 
const friends = fs.readFileSync("./friends.json", {encoding: 'utf-8'});
 
console.log(friends);

Salida de muestra:

[
    {
      "id": 0,
      "name": "Maribel Andrews"
    },
    {
      "id": 1,
      "name": "Gilliam Mcdonald"
    },
    {
      "id": 2,
      "name": "Lisa Wright"
    }
  ]

Ahora que hemos leído con éxito el archivo JSON, podemos analizar la cadena JSON en un objeto JSON. Podemos hacerlo usando la función JSON.parse(). Esta es una función de javascript que podemos usar para convertir la cadena JSON en un objeto.

Esta función acepta dos parámetros: la cadena JSON que se analizará y un parámetro opcional conocido como reviver. Según mozilla.org, si el parámetro reviver es una función, especifica cómo se transforma el valor analizado originalmente.

const fs = require("fs");
 
const friends = fs.readFileSync("./friends.json", {encoding: 'utf-8'});
 
const parsed_result = JSON.parse(friends);
 
 
console.log(parsed_result);

Producción :

[
  { id: 0, name: 'Maribel Andrews' },
  { id: 1, name: 'Gilliam Mcdonald' },
  { id: 2, name: 'Lisa Wright' }
]

En esta sección, veremos la forma de analizar una cadena JSON de forma asíncrona. En los ejemplos anteriores, hemos visto cómo podemos analizar datos de cadena JSON de forma síncrona. Sin embargo, en Node js, escribir funciones sincrónicas se considera malo, especialmente si los datos son grandes.

Podemos analizar datos de cadena JSON en un objeto JSON utilizando el método fs.readFile() y funciones de devolución de llamada.

Garantizará que el resto del programa se ejecutará mientras los datos se recuperan en segundo plano, lo que reduce el tiempo de espera innecesario para que se carguen los datos.

const fs = require('fs');
 
fs.readFile('./friends.json',{encoding: 'utf-8'}, (err, data) => {
  if (err) console.error(err);
  const parsed_data  = JSON.parse(data);
 
  console.log(parsed_data);
});
 
console.log("Rest of the program that needs to be executed!");

Salida de muestra:

Rest of the program that needs to be executed!
[
  { id: 0, name: 'Maribel Andrews' },
  { id: 1, name: 'Gilliam Mcdonald' },
  { id: 2, name: 'Lisa Wright' }
]

Si bien este método puede parecer la mejor opción cuando se trabaja con grandes cantidades de datos que los métodos síncronos discutidos anteriormente, no lo es. Cuando tenemos datos de una fuente externa, constantemente necesitamos volver a cargar los datos cuando se han realizado nuevos cambios; este es el mismo escenario cuando se trabaja con los métodos síncronos. La APIS de flujo nativo de Node js es la alternativa recomendada cuando se trabaja con grandes datos externos.

Autor: Isaac Tony
Isaac Tony avatar Isaac Tony avatar

Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.

LinkedIn