gpt4 book ai didi

javascript - SyntaxError : Unexpected end of JSON input at JSON. 在 IncomingMessage. 解析 ()

转载 作者:行者123 更新时间:2023-12-04 14:09:25 30 4
gpt4 key购买 nike

我正在尝试制作一个天气应用程序,并且我正在使用天气 API 来获取信息,但是当我尝试解析 JSON 数据时出现此错误: SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>) at IncomingMessage.<anonymous>编辑:我需要从 https 请求中获取纬度和经度值。我试着退回它,但它仍然会说 lon 和 lat 未定义。

第二次编辑:如果我输入 lon 和 lat 的值,它将解析数据并发回 JSON,但我需要 https 请求中来自 locaionIQ API 的 lon 和 lat 的值。我如何获得这些值?这是代码:

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);

})
})

})

最佳答案

在 Node 下,HTTP/HTTPS 请求数据可以到达多个 block ,在解析结果 JSON 字符串之前需要合并这些 block 。

本质上,JSON 解析需要在 on("end", callback) 中执行,而不是在 on("data", callback) 中执行,否则有不完整的风险JSON 文本。

Node 文档在 http.get(options[, callback]) 下有一个很好的获取 JSON 数据的工作示例.由于 HTTPHTTPS API 的相似性,这在文档的 HTTPS 部分似乎没有重复。

关于javascript - SyntaxError : Unexpected end of JSON input at JSON. 在 IncomingMessage.<anonymous> 解析 (<anonymous>),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65605567/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com