如何通过解析JSON文件来分配JavaScript变量?
我有一个数据库服务器,它将每天运行一个脚本来生成此给定文件:如何通过解析JSON文件来分配JavaScript变量?,javascript,json,Javascript,Json,我有一个数据库服务器,它将每天运行一个脚本来生成此给定文件: {"data": [ {"variable":"var1","value": "123"}, {"variable":"var2","value": "456"}, {"variable":"var3","value": "789"}]} 我试图解析这个文件,为一个HTML画布元素设置三个javascript变量 到目前为止,我想我将解析JSON文件 var JSONfile = './file.json'; var getData
{"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 getData.variable=getData.Value代码>中断。我缺少什么?JSON.parse()在传递文件时需要一个JSON字符串
您需要做的第一件事是使用AJAX将文件的内容放入变量中。可以使用jQuery之类的库(请参阅),也可以从头开始使用JavaScript。但是不要把时间浪费在“从头开始”的版本上,除非你不得不这样做
使用jQuery将文件内容获取到对象中,并将内部数据(数组)传递给名为doSomething()的函数:
在这里,您将遍历传递的数组,该数组包含具有.variable和.value属性的元素。这会将每个元素的两个属性写入控制台,以便于查看:
function doSomething(arr) {
for (i = 0; i < arr.length; i++) {
console.log(arr[i].variable + ': ' + arr[i].value);
}
}
JSON.parse()
API需要一个包含JSON语法的字符串,而不是文件名。@Pointy是正确的。。。您需要执行一个AJAX调用来获取JSON内容,然后解析从该调用返回的内容;[$.getJSON('test.json',函数(数据){$.each(data.JSONdata,函数(i,f){var f.number=f.value;});})
它仍然在var f.number上中断…意外标记。如何将变量名设置为对象中的值?大部分工作正常。是否有方法从JSON中同时分配变量名和值?var jsonFromFile.data[I]。variable=jsonFromFile.data[I].value
我已更新我的答案,以包含ajax调用并访问每个数组元素的.variable和.value属性。我继续获得一个未知标记。
尝试使用属性命名变量时出错。var jsonFromFile.data[I]。variable=jsonFromFile.data[I].value
是产生错误的原因。var jsonFromFile.data[i]。variable=jsonFromFile.data[i].value尝试用.value覆盖.variable。这就是您想要做的吗?我认为您的目标是将jsonFromFile中的内容提取到更有用的内容中,以便您在其他工作中使用。也许如果我知道在检索值后您如何处理这些值,我可以建议如何进行相对于手动设置var1=123 var2=456 var3=789
,我想从JSON文件中设置这三个变量名和值。
$(function () {
$.getJSON("./file.json", function (data) {
}).success(function (data) {
myArr = data.data;
doSomething(data.data);
});
});
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"