如何将JSON中的数据插入NodeJS中的const变量中以使用API



我目前正在做一个NodeJS项目,它从JSON中获取数据,然后使用它从API中获取天气信息,之后我想将其保存到DB中,我已经问过了,这个问题帮助我解决了一些问题,但现在我有了其他问题,我将数据发送到常量,但问题是我不知道为什么我在JSON解析中出错,我想使用JSON中的lat和lon(我有大约一百个数据coords(并将其插入const中,任何帮助都会有所帮助,这就是我得到的错误

Successful connection
[]
undefined:1
^
SyntaxError: Unexpected token  in JSON at position 0
at JSON.parse (<anonymous>)

这是我的函数,它从JSON获取数据,并从API获取数据:

async function calcWeather() {
fs.readFile("./json/data.json","utf8", function (err, data) {
if(err) throw err;
data2 = JSON.parse(data);

console.log(typeof data2);
for (let item of data2) {

let base = `https://api.openweathermap.org/data/2.5/weather?lat=${item.latjson}&lon=${item.lonjson}&appid=${api_key}&units=metric&lang=sp`;

fetch(base)
.then((responses) => {
return responses.json();
})
.then((data) => {
var myObject = {
Id_Oficina: item.IdOficina,
Humedad: data.main.humidity,
Nubes: data.clouds.all,
Sensacion: data.main.feels_like,
Temperatura: data.main.temp,
Descripcion: data.weather.description,
};
// validation and saving data to array
if (myObject.Temperatura < 99) {
lstValid.push(myObject);
}
});
}
});
console.log(lstValid);
}

这是我获取数据的JSON:

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

我认为问题在解析中,但我不明白我做错了什么

由于使用fs.readFile读取文件,因此得到的是字符串,而不是JavaScript对象。您需要完全解析它才能操作内容(您似乎只解析了第一个字符(:

const fs = require('fs')
let rawdata = fs.readFileSync('./data.json')
let data = JSON.parse(rawdata)

就我个人而言,我认为要求它要容易得多(不需要使用fs(:

const jsonData = require('./json/data.json')
async function calcWeather() {
for (let item of jsonData) {
// ...
}
}

最新更新