获取本地 JSON

IT技术 javascript json reactjs
2021-05-21 13:06:57

如何获取我目录中的本地 JSON 文件?

JSON 文件如下所示:

[
  {
    "name": "Sara",
     "id": 3232
   },
  {
    "name": "Jim",
     "id": 2342
   },
  {
     "name": "Pete",
      "id": 532532
   }
]

如果我在同一个文件中有 json 信息,我正在尝试使用它,它运行得很好,但如果我想把它带进来,我一生都无法让它工作,它会继续阅读它不明确的。

这是我所拥有的

getData() {


    var json_data = require('../services/contributors.JSON');


    for (var i in json_data){
    console.log('Name: ' + json_data[i]["name"])

    }


}

你能看出我做错了什么吗?我试图让它成为react所以也许react的工作方式不同?我不知道。任何帮助将不胜感激。谢谢!

4个回答

利用 fetch

fetch("../services/contributors.JSON")
.then(res => res.json())
.then(data => console.log(data))

我希望这有帮助

由于浏览器安全限制,您需要从 Web 服务器运行您的网页。通过确保首先安装 Node.js,然后安装一个简单的开发服务器,您可以很容易地做到这一点:

npm install -g http-server

然后从您的控制台/终端,导航到包含您的代码的目录,然后运行:

http-server

最后,更新您的 JavaScript 代码以像处理任何其他服务器调用一样加载它:

async function loadJSON (url) {
  const res = await fetch(url);
  return await res.json();
}

loadJSON('../services/contributors.JSON').then(data => {
  console.log(data[0].name);
});

然后从http://localhost:8080(或运行 http 服务器的任何端口)加载页面

尝试使用文件系统。不要认为从 JSON 文件中读取数据是这样的。

const fs = require('fs');
const json_data = require('../services/contributors.JSON');

fs.readFile(json_data, 'utf8', function (err, data) {
  try {
    data = JSON.parse(data)
    for (let i in data){
    console.log('Name:',data[i].name)
    }
  } catch (e) {
    // Catch error in case file doesn't exist or isn't valid JSON
  }
});

经过数小时试图理解这里的一些评论后,我发现公共文件夹位于 React 应用程序的根文件夹中,而不是其他地方,因为我正忙于寻找一个没有丢失的公共文件夹。

因此,对于像我们这样仍然想知道公共文件夹在哪里的任何人和新手,它就位于“Node_Modules”文件夹下的项目文件夹中

之后,我使用了以下代码:

    useEffect(() => {
    fetch('data.json')
        .then(response => response.json())
        .then((json) => setData(json))
}, [])

和中提琴,我的 json 文件被提取了!