Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

436
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!