从json文件创建javascript数组的最佳方法是什么? 我有四个空的JavaScript数组,我想填充从json文件导入的数据。
var firstname = new Array();
var address= new Array();
var city = new Array();
文件Json:“file.json”
[
{"name ": "John", "address": "350 Fifth Avenue", "city ": "New York"},
{"name ": "Mark", "address": "1101 Arch St", "city ": "Philadelphia"},
{"name ": "Jack", "address": "60th Street", "city ": "Chicago"}
]
我试试:
$.getJSON('file.json',function (data) {
for (var i = 0; i < data.length; i++) {
firstname.push.apply( firstname, data[i].firstname );
address.push.apply( address, data[i].address );
city.push.apply( city, data[i].city );
}
});
但数组仍为空。 提前致谢
================================已解决============== =================
$.ajax({
async: false,
url: 'file.json',
data: "",
accepts:'application/json',
dataType: 'json',
success: function (data) {
for (var i = 0; i < data.length; i++) {
firstname.push( data[i].firstname );
address.push( data[i].address );
city.push( data[i].city );
}
}
})
// Get arrays outside callback function
console.log('result: '+firstname.length); // result: 3
答案 0 :(得分:5)
您似乎订单有误,data
是数组,所以它不是
data.name[i]
但
data[i].name
并删除奇怪的apply
它将是
$.getJSON('json.js',function (data) {
for (var i = 0; i < data.length; i++) {
name.push( data[i].name );
address.push( data[i].address );
city.push( data[i].city );
}
});
另请注意,name
是全局上下文中变量名称的错误选择。
答案 1 :(得分:1)
你有两三个问题。
从中删除引号。
认真考虑给予.json
文件扩展名,然后您更有可能获得JSON的正确MIME类型。 (JSON数据文件不是JavaScript程序)。
文件Json:&#34; data.json&#34;
[
{"name ": "John", "address": "350 Fifth Avenue", "city ": "New York"},
{"name ": "Mark", "address": "1101 Arch St", "city ": "Philadelphia"},
{"name ": "Jack", "address": "60th Street", "city ": "Chicago"}
]
这过于复杂,并且以错误的顺序访问属性。
name.push.apply(name, data.name[i]);
忘记使用apply
。你不需要它。
然后请注意,您的JSON数组包含对象,而不是相反。您需要在属性名称之前访问数组索引:
name.push(data[i].name);
最后 - 您的代码并未显示您如何测试结果。请记住,Ajax是异步的,因此如果您在回调函数之外检查数组的值,它们可能尚未填充。