Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

437
Visualizações
SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>) at IncomingMessage.<anonymous>

Im trying to make a weather app and I'm using a weather API to get the information but this error shows up when I'm trying to parse the JSON data: SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>) at IncomingMessage.<anonymous> edit: I need to get the lat and lon values from an https request. I tried returning it but it will still say lon and lat is undefined.

second edit: If I input the values of lon and lat It will parse the data and send back the JSON but I need the values of lon and lat from the locaionIQ API on the https request. How do I get those values? here is the code:

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 Respostas
Responde à pergunta

0

Under Node, HTTP/HTTPS request data can arrive in multiple chunks which need to be amalgamated before parsing the resultant JSON string.

Essentially JSON parsing needs to be performed in an on("end", callback), not in an on("data", callback), or risk incomplete JSON text.

Node documentation has an excellent working example for getting JSON data under http.get(options[, callback]). This does not appear to be duplicated in the HTTPS section of documentation due to similarities of the HTTP and HTTPS APIs.

over 4 years ago · Santiago Trujillo Relatório

0

Https response data are collected in small chunks, so when its collecting data ("on"), we should append the data(string) in variable (starting with empty string [here let chunks="";])

When all the chunks of data are collected ("end"), then we should finally parse the string(API data) into JSON format.

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda