![](/img/trans.png)
[英]Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>)
[英]SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>)
我正在使用 API 獲取一些信息,以便在 nodejs 中使用 https.get() 在我的 web 頁面上顯示。 但是當我嘗試通過將響應解析為 JSON 來控制台記錄響應時,會顯示此錯誤
語法錯誤:在 IncomingMessage 的 JSON.parse () 處的 JSON 輸入意外結束。 (C:\Users\Hardik Aggarwal\Desktop\RSC\app.js:17:33) 在 IncomingMessage.emit (events.js:315:20) 在 addChunk (_stream_readable.js:295:12) 在 readableAddChunk (_stream_readable. js:271:9) 在 IncomingMessage.Readable.push (_stream_readable.js:212:10)
在 HTTPParser.parserOnBody (_http_common.js:132:24) 在 TLSSocket.socketOnData (_http_client.js:469:22) 在 TLSSocket.emit (events.js:315:20) 在 addChunk (_stream_readable.js:295:12)
URL 正在以 JSON 格式發送正確的數據。 唯一的問題是 JSON.parse() 無法處理此數據。 代碼是
app.get("/", function(req, res){
https.get(url, "JSON", function(response){
response.on("data", function(data){
const currency=JSON.parse(data);
console.log(currency);
})
})
res.render("index");
})
當您使用“數據”事件時,這意味着您將響應視為 stream 並且不能保證它會在一個塊中發送所有數據。 因此,在“數據”事件中,您應該收集所有塊,在“結束”事件中,您應該嘗試解析數據。 另外,不要忘記檢查 response.statusCode 是否有錯誤。 嘗試這個:
app.get("/", function(req, res){
https.get(url, "JSON", function(response){
var data;
response.on("data", function(chunk) {
if (!data) {
data = chunk;
} else {
data += chunk;
}
});
response.on("end", function() {
const currency=JSON.parse(data);
console.log(currency);
res.render("index");
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.