javascript - 如何将 HTTPS 获取响应传输到对象中

标签 javascript node.js json https get

我转换了我的代码,这样我就可以使用一些 HTTPS GET 请求,而不需要额外的 node_modules,问题是当我尝试通过管道传输 /releases/ 时,它基本上是一个原始 JSON文件,我的代码需要它回来,并且出现类似 SyntaxError: Unexpected end of JSON input 的问题,因为由于某种原因,当我 console.log() 所谓的 JSON 数组时,结束未完成与 ] 或 }。因此,我尝试将响应通过管道传输到数组中,但现在出现错误:dest.on isn't a function,

代码:

    https.get({hostname: `api.github.com`, path: `/repos/${username}/${reponame}/releases`, headers: {'User-Agent': 'a user agent'}}, async (response) => {
        var file = new Array()
        response.pipe(file)
        response.on('end', async function() { //issue occurs at response.pipe ???
        var releases = JSON.parse(fs.readFileSync('./releases.json', 'utf8'))
        console.log(releases)

我从 Github 访问的 JSON 文件如下所示:https://api.github.com/repos/davidmerfield/randomColor/releases (随机存储库)

但是,我的文件 (releases.json) 看起来像 this

编辑:我做了广泛的测试。我使用了 pkg 输出的相同 JSON 文件,用 fs 等读取它,一切看起来都很好。所以问题很可能出在 https/response

最佳答案

我发现了如何将 HTTP 请求通过管道传输到对象中,而不是通过管道将其传输到文件中。感谢这个post 。我这样做了并将字符串转换为 JSON 数组。

https.get({hostname: `api.github.com`, path: `/repos/${username}/${reponame}/releases`, headers: {'User-Agent': 'agent'}}, async response => {
        var str = ''
        response.on('data', (data) => {
            str += data
        })
        response.on('end', async function() {
        var releases = JSON.parse(str)
//and so on...

关于javascript - 如何将 HTTPS 获取响应传输到对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60623291/

相关文章:

javascript - D3 箭头标记表示目标 - 源流,而不是源 - 目标流

node.js - 在 Node.js 中,是否可以判断被监视的文件被移动到了哪里?

node.js - 初始化后winston-mongodb错误

javascript - 与 http 服务器通信

javascript - 我可以将对象分配到下拉列表的值中吗?

android - HttpURLConnect - 使用 GSON 流的带有 JSON 的 Http PUT 不发送内容

javascript - 我将如何为表行添加一个 onclick 事件。前 : if the decline button is pressed, 行背景变为红色

javascript - 在html中旋转图像

javascript - 更改检查页面上元素的 async/await 函数以与 Safari 10 配合使用

java - 尝试返回 JSON 时,Jax-RS 错误 500 无异常