如何通过javaScript从json访问数据?
我试图用JS进行数据可视化,从动态json文件中获取值,但我无法通过控制台可视化数据 其思想是能够使用这4个值(outputValue0、outputValue1、outputValue2、outputValue3)来修改形状和颜色本身。我应该如何调用我的变量来访问javaScript中的变量 这是我的代码:如何通过javaScript从json访问数据?,javascript,arrays,json,database,data-visualization,Javascript,Arrays,Json,Database,Data Visualization,我试图用JS进行数据可视化,从动态json文件中获取值,但我无法通过控制台可视化数据 其思想是能够使用这4个值(outputValue0、outputValue1、outputValue2、outputValue3)来修改形状和颜色本身。我应该如何调用我的变量来访问javaScript中的变量 这是我的代码: var lines = "waiting for data"; var val0 = 0; // I get a 0, of course, but I need the actual
var lines = "waiting for data";
var val0 = 0; // I get a 0, of course, but I need the actual value
var val0 = []; //I get nothing with this
function setup() {
createCanvas(400,400);
loadJSON('http://www.----------.com/data_to_json.php', gotData);
}
Object.size = function(obj){
var size = 0, key;
for(key in obj){
if(obj.hasOwnProperty(key)) size++;
}
return size;
}
function gotData(data) {
var size = Object.size(data) - 1;
console.log(size);
console.log(data[size]['timeStamp']);
console.log(data[size]['outputValue0'] + " " + data[size]['outputValue1'] + " " + data[size]['outputValue2']+ " " + data[size]['outputValue3']);
lines = size;
var val0 = data[size]['outputValue0'];
}
function draw(){
background(158, 152, 207);
textAlign(LEFT);
fill(0);
text('Emotional analysis', 10, height - 370);
text(lines + ' emotions stored',10,height -20);
text(val0,10,height -60)
}
我的控制台上几乎没有错误,但我认为这与此无关:
InvalidStateError:试图使用不可用或不再可用的对象
东方传感器已经过时。(传感器的使用已过时)
p5.js:9298:6
传感器已被淘汰。(传感器的使用已过时)
p5.js:9298:6
240
sketch.js:20:3
2019-02-08 22:03:09
草图.js:21:3
20 20 19 20
草图.js:22:3
json文件如下所示:
[{"timeStamp":"2019-02-08 13:38:53","outputValue0":"18","outputValue1":"18","outputValue2":"18","outputValue3":"18"},
{"timeStamp":"2019-02-08 13:39:03","outputValue0":"18","outputValue1":"18","outputValue2":"19","outputValue3":"18"},
{"timeStamp":"2019-02-08 13:39:13","outputValue0":"18","outputValue1":"18","outputValue2":"19","outputValue3":"18"},
{"timeStamp":"2019-02-08 13:39:23","outputValue0":"18","outputValue1":"19","outputValue2":"19","outputValue3":"19"},
{"timeStamp":"2019-02-08 13:39:33","outputValue0":"18","outputValue1":"19","outputValue2":"20","outputValue3":"19"}]
您似乎试图填充一些全局变量。但是您在范围方面犯了错误,而且这通常被认为是有缺陷的设计模式。此外,目前您似乎没有任何地方可以实际调用
draw()
函数
如果draw()
接受一些参数,例如
function draw(val0, val1, val2, val3) {
然后在gotData函数中,您可以编写
draw(data[size]['outputValue0'], data[size]['outputValue1'], data[size]['outputValue2'], data[size]['outputValue3']);
将值传递给它并更改形状。运行此代码时会发生什么情况(错误、意外结果等)?特别是,那些
console.log
语句在gotData
中显示了什么?您现在在控制台中访问它们的方式看起来是正常的……除非您能告诉我们一个错误?如果您想使用它们做其他事情,那么您需要从gotData函数将它们传递到用于修改形状的任何函数。不清楚该函数是什么/在哪里,或者它接受什么参数。但是您肯定知道如何调用函数吗?请记住,一旦您成功地将JSON字符串解析为JS变量,它就会变得像任何其他对象或数组一样……您可以以正常方式访问属性,运行循环以遍历数据项等。这也不例外。谢谢。我认为,您的console.log()
语句在gotData()函数中的结果对我们来说是最相关的。这不是非常重要,也与您的问题无关,只是一个关于使用Object.size=function
而不是var size=function
的观察/警告。在将来的某个地方,如果JavaScript向对象
添加一个大小
函数,那么您的代码将覆盖该函数。