¿Cómo analizar JSON usando Node.js? [cerrado]

Resuelto Tikhon Jelvis asked hace 13 años • 31 respuestas

¿Cómo debo analizar JSON usando Node.js? ¿Existe algún módulo que valide y analice JSON de forma segura?

Tikhon Jelvis avatar Apr 20 '11 14:04 Tikhon Jelvis
Aceptado

Puedes simplemente usar JSON.parse.

La definición del JSONobjeto es parte de la especificación ECMAScript 5 . node.js está construido sobre el motor V8 de Google Chrome , que cumple con el estándar ECMA. Por lo tanto, node.js también tiene un objeto global [docs] .JSON

Nota: JSON.parsepuede bloquear el hilo actual porque es un método sincrónico. Entonces, si planea analizar objetos JSON grandes, utilice un analizador json de transmisión.

Felix Kling avatar Apr 20 '2011 07:04 Felix Kling

puede requerir archivos .json.

var parsedJSON = require('./file-name');

Por ejemplo, si tiene un config.jsonarchivo en el mismo directorio que su archivo de código fuente, usaría:

var config = require('./config.json');

o (se puede omitir la extensión del archivo):

var config = require('./config');

tenga en cuenta que requirees sincrónico y solo lee el archivo una vez , las siguientes llamadas devuelven el resultado del caché

También tenga en cuenta que solo debe usar esto para archivos locales bajo su control absoluto, ya que potencialmente ejecuta cualquier código dentro del archivo.

eliocs avatar Mar 21 '2012 12:03 eliocs

Puedes usarJSON.parse() .

Debería poder utilizar el JSONobjeto en cualquier implementación de JavaScript compatible con ECMAScript 5 . Y V8 , sobre el cual se construye Node.js, es uno de ellos.

Nota: Si utiliza un archivo JSON para almacenar información confidencial (por ejemplo, contraseñas), esa es la forma incorrecta de hacerlo. Vea cómo lo hace Heroku: https://devcenter.heroku.com/articles/config-vars#setting-up-config-vars-for-a-deployed-application . Descubra cómo lo hace su plataforma y utilícela process.envpara recuperar las variables de configuración desde el código.


Analizando una cadena que contiene datos JSON

var str = '{ "name": "John Doe", "age": 42 }';
var obj = JSON.parse(str);

Analizando un archivo que contiene datos JSON

Tendrás que realizar algunas operaciones con archivos con fsel módulo.

Versión asincrónica

var fs = require('fs');

fs.readFile('/path/to/file.json', 'utf8', function (err, data) {
    if (err) throw err; // we'll not consider error handling for now
    var obj = JSON.parse(data);
});

Versión sincrónica

var fs = require('fs');
var json = JSON.parse(fs.readFileSync('/path/to/file.json', 'utf8'));

¿ Quieres usar require? ¡Piensa otra vez!

A veces puedes usarrequire :

var obj = require('path/to/file.json');

Pero no lo recomiendo por varias razones:

  1. requirees sincrónico. Si tiene un archivo JSON muy grande, bloqueará el bucle de eventos. Realmente necesitas usarlo JSON.parsecon fs.readFile.
  2. requireLeerá el archivo sólo una vez . Las llamadas posteriores al requiremismo archivo devolverán una copia en caché. No es una buena idea si desea leer un .jsonarchivo que se actualiza continuamente. Podrías usar un truco . Pero en este punto, es más fácil simplemente usar fs.
  3. Si su archivo no tiene .jsonextensión, requireno tratará el contenido del archivo como JSON.

¡En serio! UsarJSON.parse .


load-json-filemódulo

Si está leyendo una gran cantidad de .jsonarchivos (y si es extremadamente vago), resulta molesto escribir código repetitivo cada vez. Puedes guardar algunos caracteres usando el load-json-filemódulo.

const loadJsonFile = require('load-json-file');

Versión asincrónica

loadJsonFile('/path/to/file.json').then(json => {
    // `json` contains the parsed object
});

Versión sincrónica

let obj = loadJsonFile.sync('/path/to/file.json');

Analizando JSON de transmisiones

Si el contenido JSON se transmite a través de la red, debe utilizar un analizador JSON de transmisión. De lo contrario, bloqueará su procesador y bloqueará su bucle de eventos hasta que el contenido JSON se transmita por completo.

Hay muchos paquetes disponibles en NPM para esto. Elija lo que sea mejor para usted.


Manejo de errores/seguridad

Si no está seguro de si lo que se pasa JSON.parse()es JSON válido , asegúrese de incluir la llamada JSON.parse()dentro de un try/catchbloque. Una cadena JSON proporcionada por el usuario podría bloquear su aplicación e incluso provocar agujeros de seguridad. Asegúrese de que se realice el manejo de errores si analiza JSON proporcionado externamente.

sampathsris avatar Sep 07 '2014 13:09 sampathsris

utilizar el objeto JSON :

JSON.parse(str);
 avatar Apr 20 '2011 07:04

Otro ejemplo de JSON.parse:

var fs = require('fs');
var file = __dirname + '/config.json';

fs.readFile(file, 'utf8', function (err, data) {
  if (err) {
    console.log('Error: ' + err);
    return;
  }

  data = JSON.parse(data);

  console.dir(data);
});
pyprism avatar Jul 24 '2013 09:07 pyprism