node.js - 错误 : SyntaxError: Unexpected end of JSON input

标签 node.js json

我正在尝试使用下面的代码从 api 网站获取一个 JSON 文件,但是当我使用下面的代码获取时,我收到一条错误消息“JSON 输入意外结束”

var express = require("express");
var app = express();
var body = require("body-parser");
var https = require("https");

app.get("/results", function (req, res) {
    https.get("https://www.omdbapi.com/?apikey=d49698c3&s=harry", function (response) {       

            response.on("data", function (data) {
                var got = JSON.parse(data);
                res.send(got.Title);
            })
    })
});

最佳答案

您的代码中有几个错误的假设。

1 - 查看数据您可以看到属性标题存在于 内的每个对象中搜索 属性,这是一个 Array ,因此当 JSON 被正确解析时,您会遇到 got.Title 的问题。

2 - 事件数据可以多次调用对象响应,直到您可以获得所有数据,每次调用它时您都会收到一大块数据。

发送完所有数据后,结束 事件被调用,并且有解析 JSON 的地方。

您的代码试图解析一个不完整的 JSON 字符串,只是第一个块。

最常见的方法是声明一个 阵列 在将处理事件的函数之外 数据结束 .每 数据事件您将块推送到外部数组和 上结束 事件你连接它。

看一下这个:

var express = require('express')
var app = express()
var body = require('body-parser')
var https = require('https')

app.get('/results', function (req, res) {
  https.get('https://www.omdbapi.com/?apikey=d49698c3&s=harry', function (response) {
    const chunks = []
    response.on('data', function (chunk) {
      chunks.push(chunk)
    })

    response.on('end', function () {
      const data = Buffer.concat(chunks)
      var got = JSON.parse(data)
      // Try this one out as well
      // res.json(got)
      res.send(got.Search[0].Title)
    })
  })
})

app.listen(3000)


我刚刚测试了上面的代码,它就像一个魅力。

关于node.js - 错误 : SyntaxError: Unexpected end of JSON input,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62480360/

相关文章:

javascript - 解密 RSA 数据时出现 DOMException

node.js - 我是否需要一个用 Node.js 编写的服务器而不是常规的 nginx/Apache?

c# - 错误 : Cannot obtain Metadata; using WCF Test client, C#,并尝试实现 webhttpbinding 和 json

c# - .NET 中的 JObject.SelectToken 等效项

node.js - 测试express API需要本地服务器

javascript - 如何使用 Uglify.js 解析和迭代原型(prototype)方法?

node.js - Sequelize : how to pass findAll result as Model. 创造值(value)

javascript - Fullcalendar with spring @ResponseBody 返回带有 406 错误 :not Acceptable Header 的 Json 数组

python - 为什么单引号( ' ) and double quote( ")在 python 的 json 模块中得到不同的结果?

Javascript 使用 jQuery 将查询字符串转换为 JSON,然后返回查询字符串