提问者:小点点

json.parse()返回意外的输入结尾


[`const express=require('express');const app=express();const https=require('https');

常量url=“https://api.thevirustracker.com/free-api?countrytimeline=US”;

app.get(“/”,(req,res)=>{res.send(“server is running”)

https.get(url, (response) => {
    
    response.on("data", (data) => {

        const TimelineData = JSON.parse(data);
        console.log(TimelineData);
        
    })
})

})

app.listen(3000,()=>console.log(“服务器正在运行0n 5000”));`]1

null

const express = require('express');
const app = express();
const https = require('https');

const url = "https://api.thevirustracker.com/free-api?countryTimeline=US";

app.get("/", (req ,res) => {
    res.send("Server is Running")

    https.get(url, (response) => {
        
        response.on("data", (data) => {

            const TimelineData = JSON.parse(data);
            console.log(TimelineData);
            
        })
    })
})



app.listen(3000, ()=>console.log("Server is Running 0n 5000"));

null


共1个答案

匿名用户

可以多次激发“data”事件:https://nodejs.org/api/http.html#http_class_http_clientrequest

您必须监听“End”事件,并将“Data”事件中的所有块连接在一起,以获得全身响应。

const express = require('express');
const app = express();
const https = require('https');

const url = "https://api.thevirustracker.com/free-api?countryTimeline=US";

app.get("/", (req, res) => {

    res.send("Server is Running")

    https.get(url, (response) => {

        const chunks = [];

        response.on("data", (data) => {
            chunks.push(data);
        })

        response.on("end", () => {

            let size = chunks.reduce((prev, cur) => {
                return prev + cur.length;
            }, 0);

            let data = Buffer.concat(chunks, size).toString();

            console.log(JSON.parse(data))

        });

    })

})



app.listen(3000, () => console.log("Server is Running 0n 5000"));