如何从另一个文件夹读取JSON文件?

时间:2019-08-28 02:00:39

标签: javascript json

我有一个简单的文件夹结构,例如:

project  
│
└───data
│     file.json
│    
└───js
      test.js

我希望阅读file.json中的test.js做一些其他的后端工作。这是一个类似(但通用)的JSON文件:

{"key1": 50, "key2": 6, "key3": 20,
"ke4": 18, "key5": 38, "key6": 30}

到目前为止,我已经尝试过:

var request = new XMLHttpRequest();
request.open("GET", "< path >", false);
request.send(null)
var my_JSON_object = JSON.parse(request.responseText);
alert(my_JSON_object.result[0]);

但是没有产生结果。

我已经检查了这个post和这个one。他们问类似的问题,但是他们已经很老了。

所以,我的问题是:如何做到这一点,并且有一种新的方式(例如,提取)来做到这一点?

2 个答案:

答案 0 :(得分:1)

尽管这些答案有些陈旧,但是过时的代码仍然有效,可以回答问题的前半部分。只要有效,我就不会在乎已弃用的代码。我不确定jQuery的这种基本实现的最新情况,但它的工作方式与其他解决方案一样:

 $.getJSON('data/file.json', function(data) {
     console.log(JSON.stringify(data));
 });

此外,从您在示例中提供的代码来看,它不起作用,因为您没有正确实现其异步特性。由于它是异步操作,因此需要指定一个回调函数以在文件加载后执行:

function readTextFile(file, callback) {
   var request = new XMLHttpRequest();
   request.overrideMimeType("application/json");
   request.open("GET", "< path >", false);
   request.onreadystatechange = function() {
       if (request.readyState === 4 && request.status == "200") {
          callback(request.responseText);
       }
   }
   request.send(null);
}

// Implementation:
readTextFile("data/file.json", function(text){
   var my_JSON_object = JSON.parse(text);
   console.log(my_JSON_object);
   alert(my_JSON_object.result[0]);
});

答案 1 :(得分:0)

我认为您提供的答案应该很有效。虽然,我认为文件路径可能是错误的。而不是:

$.getJSON('data/file.json', function(data) {
     console.log(JSON.stringify(data));
 });

不应该是:

$.getJSON('./data/file.json', function(data) {
     console.log(JSON.stringify(data));
 });

注意文件路径开头的“./”。