【问题标题】:Expected a JSON object, array, or literal需要 JSON 对象、数组或文字
【发布时间】:2021-12-05 06:57:13
【问题描述】:

我从我正在学习的课程中复制了代码,但它引发了错误。该消息显示“需要一个 JSON 对象、数组或文字”,我不完全确定我做错了什么,因为我不熟悉使用 API(获取)。这是来自 VSCode 的屏幕截图。 https://www.screencast.com/t/D5oreexoCKq

除此之外,这是我在 Chrome 中遇到的错误。 https://www.screencast.com/t/Je4crxQQ4sz6

文件 -----> data.json

const json = {
    "books": [
        {
            "title": "Learn to Code",
            "author": "John Smith",
            "isbn": "324-23243"
        }, {
            "title": "The Adventures JSON",
            "author": "Jason Jones",
            "isbn": "3324-2-444"
        }, {
            "title": "New Objects",
            "author": "Jane Doe",
            "isbn": "2343-234-2433"
        }
    ]
}

文件 -----> app.js

JSON.books.forEach(function(val){
  console.log(val);
})

【问题讨论】:

  • const json = 不是 JSON,那么为什么它在 .json 文件中?
  • 我也认为这是课程的截图。 screencast.com/t/g6Hpvrp4fQ,即使删除了该关键字,我仍然在这里遇到这个问题screencast.com/t/Vghl2lfJpA9
  • 截图仍然不能使它正确..这只是无效的 JSON(它是有效的 JavaScript)。第二个错误明显不同,仅在解析(现在有效的)JSON 之后发生。关注每条消息,分别对待每个问题。
  • @user2864740 根据以下 brk 的规范编辑 JSON 后,我仍然遇到此错误。你能理解这个吗? screencast.com/t/Vghl2lfJpA9
  • 无论如何,一次一个问题(每个问题)。 SO 不能很好地用作“实时调试”会话。尽量确保每个问题都是当前问题的 SSCCE。

标签: javascript json


【解决方案1】:

在json文件中,不需要用const关键字声明数据。

你的 data.json 应该是这样的

{
  "books": [{
    "title": "Learn to Code",
    "author": "John Smith",
    "isbn": "324-23243"
  }, {
    "title": "The Adventures JSON",
    "author": "Jason Jones",
    "isbn": "3324-2-444"
  }, {
    "title": "New Objects",
    "author": "Jane Doe",
    "isbn": "2343-234-2433"
  }]
}

【讨论】:

  • 好的,删除 const 关键字后,我仍然遇到这些错误,使用课程中完全相同的代码。 screencast.com/t/Vghl2lfJpA9
  • @Nate 为什么data.json 作为脚本执行? JSON 不是脚本。
  • 我同意你的看法。我只是在学习如何使用 API 并根据所教授的代码抛出错误。
  • @Nate 显示你如何加载 json
  • 我不完全确定我是否正在加载它与我目前所写的内容。在这种情况下我没有太多工作经验。
【解决方案2】:

您在 app.js 中的脚本实际上需要获取 JSON 文件。以您所做的方式使用JSON 对象将不起作用。 JSON.booksundefined

做类似的事情

fetch("books.json").then(r=>r.json()).then(({books})=>{
  books.forEach(book=>console.log(book))
})

在您的 app.js 文件中。这是假设可以在 app.js 和 index.html 所在的文件夹中找到 book.json。

【讨论】:

  • 这很有道理,谢谢。您比我在课程中所处的位置更进一步,并且代码运行良好。这与我在课程中所教的解决方案不同,我宁愿理解为什么我的代码在我的导师做同样的事情时不起作用。
猜你喜欢
  • 1970-01-01
  • 2015-07-16
  • 1970-01-01
  • 1970-01-01
  • 2020-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多