Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

394
Vistas
¿Cómo enviar datos leídos desde un archivo como respuesta desde una ruta expresa en NodeJS?

Tengo un archivo JSON en una carpeta local con una estructura como esta.

 { license: "abcd", name: "abcd", data: [ Array of JSON Objects .... ] }

Quiero acceder a la matriz de datos en el Objeto y enviarlo como respuesta desde la ruta expresa. Esto es lo que intenté.

 import express from "express"; import fs from "fs"; import bodyParser from "body-parser"; var app = express(); app.use(bodyParser.json()); var fileData: string = fs.readFileSync("path to json file", { encoding: 'utf-8' }); var jsonData = JSON.parse(fileData).data; console.log(jsonData); app.get("/getJsonData", (err, res) => { if (err) throw err; res.send(JSON.stringify(jsonData)); }); app.listen("3001", () => console.log("listening at 3001"));

Muestra el json correcto cuando lo registro fuera de la función de ruta rápida, pero dentro de la función la respuesta es [objeto Objeto] con el código de estado 500 (Error interno del servidor).

Probé el método asíncrono también

 var app = express(); app.use(bodyParser.json()); app.get("/getJsonData", (err, res) => { if (err) throw err; fs.readFile("path to json file", (fileErr, result) => { if(fileErr) throw fileErr; var jsonData = JSON.parse(result.toString()).data; res.json(jsonData); }); });

pero obtengo la misma respuesta que [object Object] y el código de estado 500. Intenté res.send(JSON.stringify(jsonData)) pero no sirvió. ¿Cómo puedo enviar los datos json que obtengo del archivo a la interfaz usando Express? por cierto, estoy usando TypeScript para esto.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Esta línea

 app.get("/getJsonData", (err, res) =>

El err no es un error, es la solicitud que debería ser:

 app.get("/getJsonData", (req, res) => { res.send(JSON.stringify(jsonData)); });

Está literalmente en el ejemplo del sitio Hello world de express.js, allí verá que usan req

https://expressjs.com/de/starter/hola-mundo.html

La razón por la que siempre obtienes un error 500 es porque err , que obviamente es la solicitud, siempre es veraz.

Tampoco necesita Stringificarlo, solo puede hacer res.json(jsonData)

over 4 years ago · Santiago Trujillo Denunciar

0

Si desea enviar un objeto json entre su servidor Express y el cliente, deberá enviar los datos a través de res.json(obj) donde obj debe ser explícitamente un objeto JSON (no puede ser una matriz de objetos JSON) . Lo que puede hacer para enviar la matriz es simplemente envolver su matriz jsonData dentro de un par de corchetes y listo.

 let jsonData = JSON.parse(fileData).data; res.json({ jsonData }); //or if you dont understand the above use res.json({ jsonData: jsonData}) //which is equivalent to the above line
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda