簡體   English   中英

SyntaxError:JSON.parse 處的 JSON 輸入意外結束(<anonymous> )</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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM