簡體   English   中英

如何通過javaScript從json訪問數據?

[英]How to access data from json through javaScript?

我正在嘗試使用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 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 sketch.js:21:3 20 20 19 20 sketch.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']); 

將值傳遞給它,並改變形狀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM