我是与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文件。
答案 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
}]
};