使用外部json

时间:2015-11-06 09:23:25

标签: javascript json

我是与json合作的初学者,所以需要一些帮助! 我有一个外部json文件,附在这些代码的html文件中:

{
"reports": [{
        "id": "1",
        "name": "week",
        "type": "bar",
        "size": 12288
    }, {
        "id": "2",
        "name": "month",
        "type": "line",
        "size": 242688
    }]
}

还附加了另外一个外部js main.js。我想读取数组中main.js中json文件中的数据!我该怎么办?我无权更改json文件。

  • :我必须使用纯粹的js!

4 个答案:

答案 0 :(得分:1)

使用纯Javascript的解决方案。

var listreports = new Array();
function init() {
loadJSON(function(response) {
  // Parse JSON string into object
    var actual_JSON = JSON.parse(response);

    for (var prop in actual_JSON){
        tepObj = actual_JSON[prop]; // this is loop into reports, if you have reports2 will be inside
        for (var rep in tepObj){
            temprep = tepObj[rep];
            console.log(temprep)
            var report = new Object();
            report.id = temprep.id
            report.name= temprep.name
            report.type= temprep.type
            report.size= temprep.size
            listreports.push(report);
            console.log(report)
        }

    }
    console.log(listreports);
 });
}


 function loadJSON(callback) {   

    var xobj = new XMLHttpRequest();
        xobj.overrideMimeType("application/json");
    xobj.open('GET', 'test.json', true); // Replace 'test' with the path to your file
    xobj.onreadystatechange = function () {
          if (xobj.readyState == 4 && xobj.status == "200") {
            // Required use of an anonymous callback as .open will NOT return a value but simply returns undefined in asynchronous mode
            callback(xobj.responseText);
          }
    };
    xobj.send(null);  
 }


init(); //this is only to call the function.

使用Jquery的第一个解决方案

试试这个

var reports = new array()
$.getJSON( "folder/file.json", function( data ) {
}).success(function(data){
   for (var prop in data){
   temprep= data[prop]
   report.id = temprep.id
   report.name= temprep.name
   report.type= temprep.type
   report.size= temprep.size
   reports.push(report)
  });

然后你将拥有一个带有json

的对象数组

答案 1 :(得分:1)

您可以使用ajax请求将JSON文件存储在main.js中的变量中:

var xhReq = new XMLHttpRequest();
xhReq.open("GET", ***here the url to your JSON file***, false);
xhReq.send(null);

然后,您可以将JSON字符串解析为Javascript对象,以便根据需要操作数组。

var jsonObject = JSON.parse(xhReq.responseText);

答案 2 :(得分:0)

如果我理解正确你有一个带有json的文件和另一个带有你的主javascript的文件,如果这是正确的,你需要将json文件放在html中的main.js文件上面。

然后你将能够从main.js到json,因为当main.js ks加载时json文件已经加载,如果main.js在html中的json文件之前,那么你就不会有什么办法从main.js到达那个json

编辑:你的HTML头应该是这样的:

<script src="json.js"></script>
<script src="main.js"></script>

因此,main.js文件将知道json文件。其他人是正确的,你应该有一个变量,你把它放在json中,所以你将能够从main.js文件。

您可以通过此代码执行此操作(假设您要调用变量“j”

var j = your_json;

答案 3 :(得分:0)

如果以您显示的格式加载json文件,则json对象不会存储到变量中。

将您的json文件更改为:

var reports = {
"reports": [{
        "id": "1",
        "name": "week",
        "type": "bar",
        "size": 12288
    }, {
        "id": "2",
        "name": "month",
        "type": "line",
        "size": 242688
    }]
};