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

433
Vistas
SyntaxError: Final inesperado de la entrada JSON en JSON.parse (<anónimo>) en IncomingMessage.<anónimo>

Estoy tratando de crear una aplicación meteorológica y estoy usando una API meteorológica para obtener la información, pero aparece este error cuando intento analizar los datos JSON: SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>) at IncomingMessage.<anonymous> edición: necesito obtener los valores de latitud y longitud de una solicitud https. Intenté devolverlo, pero seguirá diciendo que lon y lat no están definidos.

segunda edición: si ingreso los valores de lon y lat, analizará los datos y devolverá el JSON, pero necesito los valores de lon y lat de la API locaionIQ en la solicitud https. ¿Cómo obtengo esos valores? aquí está el código:

 const express = require('express'); const app = express(); const bodyParser = require('body-parser'); const https = require('https'); const { static, response } = require('express'); require('dotenv').config(); app.use(bodyParser.urlencoded({extended:true})); app.use(express.static('public')) app.listen(3000, ()=>{ console.log("server is running on port 3000") }) app.get('/', (req,res)=>{ res.sendFile(__dirname+'/index.html') }) app.post('/', (req,res)=>{ let apiKeyLocationIQ = process.env.API_KEY_LOCATIONIQ; let apiKeyWeather = process.env.API_KEY_WEATHER; let cityLocationIQ = req.body.citySearch; let urlLocationIQ = "https://api.locationiq.com/v1/search.php?format=JSON&key="+apiKeyLocationIQ+"&q="+cityLocationIQ+"&limit=1"; https.get(urlLocationIQ, function(response){ response.on("data",function(data){ let locationIQ = JSON.parse(data); const lat= locationIQ[0].lat; const lon= locationIQ[0].lon; const cityName = locationIQ[0].display_name; }) }) let urlWeather = 'https://api.openweathermap.org/data/2.5/onecall?&lat='+lat+'&lon='+lon+'&exclude=alerts,minutely&units=metric&appid='+apiKeyWeather+'&lang=en&cnt=7'; https.get(urlWeather, function(response){ response.on("data",function(data){ let weatherData = JSON.parse(data); console.log(weatherData); }) }) })
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

En Nodo, los datos de solicitud HTTP/HTTPS pueden llegar en varios fragmentos que deben fusionarse antes de analizar la cadena JSON resultante.

Esencialmente, el análisis de JSON debe realizarse en un on("end", callback) , no en un on("data", callback) , o corre el riesgo de texto JSON incompleto.

La documentación del nodo tiene un excelente ejemplo de trabajo para obtener datos JSON en http.get(options[, callback]) . Esto no parece estar duplicado en la sección HTTPS de la documentación debido a las similitudes de las API de HTTP y HTTPS .

over 4 years ago · Santiago Trujillo Denunciar

0

Los datos de respuesta de Https se recopilan en pequeños fragmentos, por lo que cuando se recopilan datos ("on"), debemos agregar los datos (cadena) en la variable (comenzando con una cadena vacía [aquí let chunks="";])

Cuando se recopilan todos los fragmentos de datos ("fin"), finalmente debemos analizar la cadena (datos API) en formato JSON.

 https.get(apiLink, function (response) { let chunks=""; response.on("data", function (chunk) { chunks+=chunk; }); response.on("end", function(){ // console.log("API Data recieved"); let defaultCovidData = JSON.parse(chunks); // code after parse string into JSON format }); });
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