当前位置: 首页 > 知识库问答 >
问题:

尝试从本地文件获取 JSON 数据时获取语法错误 [重复]

黄跃
2023-03-14

尝试从本地文件获取 json 数据并继续获取

“JSON.parse:数据意外结束在第 1 行第 1 列” 。

我已经尝试了fetch函数的许多参数,但是我总是得到至少一个错误。

    function getData() {
      fetch('./data.json', {mode: 'no-cors'})
      .then((res) => res.json())
      .then((data) => {
        console.log(data);
      })
    };

JSON数据

{
  "CustomerJohn": [
    {
      "month": "April",
      "transaction": 1,
      "price": 57
    },
    {
      "month": "April",
      "transaction": 2,
      "price": 89
    },
    {
      "month": "May",
      "transaction": 1,
      "price": 163
    },
    {
      "month": "May",
      "transaction": 2,
      "price": 43
    },
    {
      "month": "May",
      "transaction": 3,
      "price": 221
    },
    {
      "month": "June",
      "transaction": 1,
      "price": 99
    },
    {
      "month": "June",
      "transaction": 2,
      "price": 201
    }
  ]
}

我想安慰你。记录数据以确保其正常运行。

共有1个答案

田宇
2023-03-14

您总是会得到错误Fetch API无法加载文件:///C:/your/path/to/data.json.不支持URL方案“文件”。如果您使用获取来检索未运行服务器的本地文件,即通过file:///协议而不是超文本传输协议://https://访问JSON文件。

为了访问它,您必须处于某种服务器环境中,并且可以使用XMLHttpRequest检索数据。我为您准备了以下工作代码:

// Method which actually read json using XMLHttpRequest and promise
const jsonFileReader = async path => {
    return new Promise((resolve, reject) => {

        const request = new XMLHttpRequest();
        request.open('GET', path, true);
        request.responseType = 'blob';

        request.onload = () => {
          const reader = new FileReader();

          reader.onload = e => resolve(e.target.result);
          reader.onerror = err => reject(err);
          reader.readAsDataURL(request.response);
        };

        request.send();
    });
}

// This mthod will return the JSON
const returnJsonData = async (url) => {
    const jsonData = await jsonFileReader(url);
    console.log('Here is your JSON data: => ', jsonData);
    return jsonData;
}

// Calling the function where you put URL
returnJsonData('./file.json');

此外,如果您没有在服务器上运行此代码,您将得到以下错误,访问XMLHttpRequest at'file:///C:/your/path/to/data.json'from源'null'已被CORS策略阻止:跨源请求仅支持协议方案:超文本传输协议、数据、chrome、chrome-扩展、https。

原因再次是协议和跨域问题,它限制了您访问该文件。

所以即使你的文件来源于同一个主机(localhost),但是只要方案不同(http / file),它们就被当作不同的来源。

如何在 Node 中创建快速服务器.js

  1. 通过键入npm install-g超文本传输协议-server
  2. 安装超文本传输协议-server
  3. 切换到您的工作目录,yoursome.html所在的位置
  4. 通过发出超文本传输协议-server-c-1
  5. 来启动您的超文本传输协议服务器

这将运行一个 Node.js httpd,它将目录中的文件作为静态文件提供,可从 http://localhost:8080

 类似资料:
  • //回收器和视图 //调用提取数据方法extractData(); //提取数据

  • 我正在建立一个阳光应用从Udacity课程。在第2课中,我尝试将应用程序连接到OpenWeatherMap.org站点上的云,以获取城市的天气数据。首先,基本查询起作用,即URL URL=新URL(“http://api.openweathermap.org/data/2.5/forecast?id=524901&appid=c21566b1153f87e9f1d256b962cd6d42”);但

  • 问题内容: 我想从本地计算机上的JSON文件中获取数据。但是我无法获取数据。它显示了$ http的某些跨域错误。 这是我的代码。 任何人都可以帮助我如何显示本地JSON文件中的数据?提前致谢。 问题答案: 很简单,就像

  • 我正在努力在Python中做一个实时货币转换器。我已经成功地将URL所需的所有数据提取到Python中。但是,我现在尝试在URL中调用特定字符串。这是我当前的代码: 如您所见,我已经打印了它获取的所有数据,但它现在正在从中打印特定的字符串。 我的问题是,如何从URL解析特定字符串?我听说过json.load,这是我应该使用的东西吗?

  • 问题内容: 如何存储本地文件(如JSON),然后从控制器中获取数据? 问题答案: 从React Native 0.4.3开始,您可以像这样读取本地JSON文件: 然后像普通的JS对象一样访问customData。

  • 我已经创建了一个简单的Spring Web MVC应用程序,该应用程序从酒店API获取json Web响应,但是当我尝试从根节点使用findPath()方法时,我收到错误。我正在使用Jackson Library进行json解析。代码如下: 第3行产生错误。 这是我的网络回复: 错误消息: HTTP 状态 500 - 处理程序处理失败;nested exception is java.lang.N