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

281
Visualizações
¿Cómo puedo agregar datos de un JSON a una variable constante en Node JS?

Estoy trabajando en un NodeJS. Quiero tomar datos de data.json , un archivo JSON con coordenadas (lat y lon) y usarlos para mostrar el clima y otras cosas, usando Open Weather API . Espero traer esas coordenadas del JSON y luego crear los objetos, pero obtengo mis datos como indefinidos:

 Official Id: undefined https://api.openweathermap.org/data/2.5/onecall?lat=undefined&lon=undefined&exclude=hourly,daily&appid=123

Aquí hay un pequeño ejemplo de data.json :

 [ { "latjson": 1, "lonjson": 1, "IdOficina": "1" }, { "latjson": 2, "lonjson": 2, "IdOficina": "2" } ]

y así es como intento guardar esos datos en una constante

 function calcWeather1() { var data = fs.readFileSync("./json/data.json", "utf8"); /*const data = [{ "latjson": "33.44", "lonjson": "-94.04", "IdOficina": "1" }, { "latjson": 2, "lonjson": 2, "IdOficina": "2" } ];*/ for (let item of data) { let url = `https://api.openweathermap.org/data/2.5/onecall?lat=${item.latjson}&lon=${item.lonjson}&exclude=hourly,daily&appid=123`; console.log(`Official Id: ${item.IdOficina}`); console.log(url); console.log('-----------'); } }

El problema es que, cuando envío los datos JSON como me dijo Randy:

 /*const data = [{ "latjson": "33.44",

Yo obtengo:

 Official Id: 1 https://api.openweathermap.org/data/2.5/onecall?lat=33.44&lon=-94.04&exclude=hourly,daily&appid=123

funciona, pero cuando lo tomo de un archivo JSON, como:

 var data = fs.readFileSync("./json/data.json", "utf8");

yo obtengo

 Official Id: undefined https://api.openweathermap.org/data/2.5/onecall?lat=undefined&lon=undefined&exclude=hourly,daily&appid=123 -----------

EDITAR: Traté de traer datos como Randy me dijo:

 const json = fs.readFileSync("./json/data.json", "utf8"); const data = JSON.parse(json); for (let item of data) {...

y sigue siendo undefined

EDITAR: aquí está mi data.json , agregué la forma en que está estructurado aquí, pero aquí está el archivo

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

EDITAR: OP no ha analizado la cadena JSON del archivo, agregando esas instrucciones. Al leer el archivo, lo lee como una cadena, debe analizarse en un objeto JavaScript. Use JSON.parse() para lograr ese objetivo.

 const json = fs.readFileSync("./json/data.json", "utf8"); const data = JSON.parse(json);

Ahora la variable data contiene la matriz de objetos. Si observa el primer elemento de la matriz y solicita su jsonlat , debería devolver los datos correctos:

 data[0].latjson

Ahora está listo para continuar con las siguientes instrucciones:

No está analizando la matriz correctamente. Teniendo en cuenta los comentarios y el cambio en la estructura de datos discutidos allí, estos son los datos para analizar:

 [ { "latjson": 1, "lonjson": 1, "IdOficina": "1" }, { "latjson": 2, "lonjson": 2, "IdOficina": "2" } ]

En lugar de usar for...in , realmente debería usar for...of , lo hará más fácil y lo mantendrá fuera de problemas en el futuro con otra codificación que haga.

Así es como se vería:

 const fakeAPIKey = 12342456478; const data = [{ "latjson": "33.44", "lonjson": "-94.04", "IdOficina": "1" }, { "latjson": 2, "lonjson": 2, "IdOficina": "2" } ]; for (let item of data) { let url = `https://api.openweathermap.org/data/2.5/onecall?lat=${item.latjson}&lon=${item.lonjson}&exclude=hourly,daily&appid=${fakeAPIKey}`; console.log(`Official Id: ${item.IdOficina}`); console.log(url); console.log('-----------'); }

about 4 years ago · Juan Pablo Isaza Relatório

0

{"cod":"400","message":"wrong latitude"} está recibiendo una respuesta de solicitud incorrecta de la API. Parece del mensaje de error que la latitud es incorrecta

about 4 years ago · Juan Pablo Isaza 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