¿Cómo analizar JSON usando Node.js? [cerrado]
¿Cómo debo analizar JSON usando Node.js? ¿Existe algún módulo que valide y analice JSON de forma segura?
Puedes simplemente usar JSON.parse
.
La definición del JSON
objeto 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.parse
puede 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.
puede requerir archivos .json.
var parsedJSON = require('./file-name');
Por ejemplo, si tiene un config.json
archivo 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 require
es 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.
Puedes usarJSON.parse()
.
Debería poder utilizar el JSON
objeto 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.env
para 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 fs
el 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:
require
es sincrónico. Si tiene un archivo JSON muy grande, bloqueará el bucle de eventos. Realmente necesitas usarloJSON.parse
confs.readFile
.require
Leerá el archivo sólo una vez . Las llamadas posteriores alrequire
mismo archivo devolverán una copia en caché. No es una buena idea si desea leer un.json
archivo que se actualiza continuamente. Podrías usar un truco . Pero en este punto, es más fácil simplemente usarfs
.- Si su archivo no tiene
.json
extensión,require
no tratará el contenido del archivo como JSON.
¡En serio! UsarJSON.parse
.
load-json-file
módulo
Si está leyendo una gran cantidad de .json
archivos (y si es extremadamente vago), resulta molesto escribir código repetitivo cada vez. Puedes guardar algunos caracteres usando el load-json-file
mó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/catch
bloque. 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.
utilizar el objeto JSON :
JSON.parse(str);
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);
});