开发者问题收集

如何通过解析 JSON 文件来分配 JavaScript 变量?

2015-03-25
2821

我有一个数据库服务器,它将运行一个脚本来每天生成这个给定的文件:

{"data": [
{"variable":"var1","value": "123"},
{"variable":"var2","value": "456"},
{"variable":"var3","value": "789"}]}

我正在尝试解析此文件以设置 HTML 画布元素的三个 javascript 变量。

到目前为止,我正在考虑解析 JSON 文件

var JSONfile = './file.json';
var getData = JSON.parse(JSONfile);

然后使用 for 循环来分配变量

for (i = 0; i < getData.length; i++) {
    var getData.variable=getData.Value;
}

我希望得到以下结果:

var var1 = 123;
var var2 = 456;
var var3 = 789;

但是 var getData.variable=getData.Value; 中断了。我遗漏了什么?

1个回答

当您将文件传递给 JSON.parse() 时,它需要 JSON 字符串。

您需要做的第一件事是使用 AJAX 将文件内容放入变量中。要么使用 jQuery 之类的库(请参阅 http://api.jquery.com/jquery.getjson/ ),要么从头开始使用 JavaScript。但除非迫不得已,否则不要在“从头开始”版本上浪费时间。

使用 jQuery 将文件内容放入对象中,并将内部数据(数组)传递给名为 doSomething() 的函数:

    $(function () {
        $.getJSON("./file.json", function (data) {
        }).success(function (data) {
            myArr = data.data;
            doSomething(data.data);
        });
    });

在这里,您将遍历传递的数组,其中包含具有 .variable 和 .value 属性的元素。这会将每个元素的两个属性都写入控制台,以方便您查看:

    function doSomething(arr) {
        for (i = 0; i < arr.length; i++) {
            console.log(arr[i].variable + ': ' + arr[i].value);
        }
    }

您也可以直接通过索引访问属性,如下所示:

alert(jsonFromFile.data[2].variable);  // Will alert "var3"
alert(jsonFromFile.data[2].value);     // Will alert "789"
Benjamin Ray
2015-03-25