【问题标题】:SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>)SyntaxError:JSON.parse (<anonymous>) 处的 JSON 输入意外结束
【发布时间】:2020-10-05 17:50:13
【问题描述】:

我正在使用 API 获取一些信息,以便在 nodejs 中使用 https.get() 显示在我的网页上。但是当我尝试通过将响应解析为 JSON 来控制台记录响应时,会显示此错误

SyntaxError:JSON 输入意外结束 在 JSON.parse() 在传入消息。 (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");
})

【问题讨论】:

    标签: javascript node.js json api


    【解决方案1】:

    当您使用“数据”事件时,这意味着您将响应视为一个流,并且不能保证它会在一个块中发送所有数据。因此,在“数据”事件中,您应该收集所有块,在“结束”事件中,您应该尝试解析数据。另外,不要忘记检查 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");
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2020-03-09
      • 2021-02-27
      • 2018-12-09
      • 2021-06-08
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 2021-08-10
      • 2020-02-06
      相关资源
      最近更新 更多