如何从外部文件JSON创建JAVASCRIPT数组

How to create JAVASCRIPT ARRAY from external file JSON

本文关键字:创建 JAVASCRIPT 数组 JSON 文件 从外部      更新时间:2023-09-26

从json文件创建javascript数组的最佳方法是什么?我有四个空的JavaScript数组,我想用从json文件导入的数据填充它们。

var firstname = new Array();
var address= new Array();
var city = new Array();

File 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

你似乎把顺序搞错了,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无效。

去掉外部的引号

认真考虑给予是一个.json文件扩展名,那么你更有可能得到正确的JSON MIME类型。(JSON数据文件不是JavaScript程序)。


File: "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是异步的,所以如果您在回调函数之外检查数组的值,它们可能还没有被填充。