javascript - mostrar - Utilizando Node.JS, ¿cómo leo un objeto JSON en la memoria(del servidor)?
recorrer objeto json javascript (7)
Al menos en Node v8.9.1, puedes hacer
var json_data = require(''/path/to/local/file.json'');
y acceder a todos los elementos del objeto JSON.
Fondo
Estoy experimentando un poco con Node.js y me gustaría leer un objeto JSON, ya sea desde un archivo de texto o un archivo .js (¿cuál es mejor?) En la memoria para poder acceder a ese objeto rápidamente desde el código. Me doy cuenta de que hay cosas como Mongo, Alfred, etc., pero eso no es lo que necesito ahora.
Pregunta
¿Cómo leo un objeto JSON de un archivo de texto o js a la memoria del servidor usando JavaScript / Nodo?
Asíncrono está ahí por una razón! Lanza piedra a @mihai.
De lo contrario, aquí está el código que utilizó con la versión asíncrona:
// Declare variables
var fs = require(''fs''),
obj
// Read the file and send to the callback
fs.readFile(''path/to/file'', handleFile)
// Write the callback function
function handleFile(err, data) {
if (err) throw err
obj = JSON.parse(data)
// You can now play with your datas
}
En el Nodo 8 puede usar el util.promisify()
para leer un archivo asíncronamente como este
const {promisify} = require(''util'')
const fs = require(''fs'')
const readFileAsync = promisify(fs.readFile)
readFileAsync(`${__dirname}/my.json`, {encoding: ''utf8''})
.then(contents => {
const obj = JSON.parse(contents)
console.log(obj)
})
.catch(error => {
throw error
})
La forma más fácil que he encontrado para hacer esto es simplemente usar require
y la ruta a su archivo JSON.
Por ejemplo, suponga que tiene el siguiente archivo JSON.
prueba.json
{
"firstName": "Joe",
"lastName": "Smith"
}
A continuación, puede cargar fácilmente esto en su aplicación node.js utilizando require
var config = require(''./test.json'');
console.log(config.firstName + '' '' + config.lastName);
Sincronizar
var fs = require(''fs'');
var obj = JSON.parse(fs.readFileSync(''file'', ''utf8''));
Async:
var fs = require(''fs'');
var obj;
fs.readFile(''file'', ''utf8'', function (err, data) {
if (err) throw err;
obj = JSON.parse(data);
});
https://nodejs.org/dist/latest-v6.x/docs/api/fs.html#fs_fs_readfile_file_options_callback
var fs = require(''fs'');
fs.readFile(''/etc/passwd'', (err, data) => {
if (err) throw err;
console.log(data);
});
// options
fs.readFile(''/etc/passwd'', ''utf8'', callback);
https://nodejs.org/dist/latest-v6.x/docs/api/fs.html#fs_fs_readfilesync_file_options
Puede encontrar todo el uso de Node.js en los documentos del sistema de archivos.
Espero que esta ayuda para usted!
Si está buscando una solución completa para Async
cargando un archivo JSON desde una Relative Path
con Manejo de Errores
// Global variables
// Request path module for relative path
const path = require(''path'')
// Request File System Module
var fs = require(''fs'');
// GET request for the /list_user page.
router.get(''/listUsers'', function (req, res) {
console.log("Got a GET request for list of users");
// Create a relative path URL
let reqPath = path.join(__dirname, ''../mock/users.json'');
//Read JSON from relative path of this file
fs.readFile(reqPath , ''utf8'', function (err, data) {
//Handle Error
if(!err) {
//Handle Success
console.log("Success"+data);
// Parse Data to JSON OR
var jsonObj = JSON.parse(data)
//Send back as Response
res.end( data );
}else {
//Handle Error
res.end("Error: "+err )
}
});
})
Estructura de directorios: