如何从外部文件 JSON 创建 JAVASCRIPT 数组
How to create JAVASCRIPT ARRAY from external file JSON
从 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
你有两三个问题。
您的JSON无效。
去掉它外面的引号。
认真考虑给一个 .json
文件扩展名,那么您更有可能获得 JSON 的正确 MIME 类型。 (JSON 数据文件不是 JavaScript 程序)。
文件 Json : "data.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"}
]
您访问数据的顺序有误
这过于复杂并且以错误的顺序访问属性。
name.push.apply(name, data.name[i]);
忘记使用 apply
。你不需要它。
然后请注意,您的 JSON 数组包含对象,而不是相反。您需要访问 属性 名称之前的数组索引:
name.push(data[i].name);
记住 Ajax
中的 A
最后 - 您的代码没有显示您是如何测试结果的。请记住 Ajax 是异步的,因此如果您在回调函数之外检查数组的值,它们可能尚未填充。
你好像顺序错了,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
是全局上下文中变量名的错误选择。
从 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
你有两三个问题。
您的JSON无效。
去掉它外面的引号。
认真考虑给一个 .json
文件扩展名,那么您更有可能获得 JSON 的正确 MIME 类型。 (JSON 数据文件不是 JavaScript 程序)。
文件 Json : "data.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"}
]
您访问数据的顺序有误
这过于复杂并且以错误的顺序访问属性。
name.push.apply(name, data.name[i]);
忘记使用 apply
。你不需要它。
然后请注意,您的 JSON 数组包含对象,而不是相反。您需要访问 属性 名称之前的数组索引:
name.push(data[i].name);
记住 Ajax
中的 A最后 - 您的代码没有显示您是如何测试结果的。请记住 Ajax 是异步的,因此如果您在回调函数之外检查数组的值,它们可能尚未填充。
你好像顺序错了,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
是全局上下文中变量名的错误选择。