Как получить доступ к данным из json через javaScript? - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь визуализировать данные с помощью 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: Предпринята попыткаиспользовать объект, который не является или более не годен к употреблению El uso del sensor de directiontación está obsoleto.(использование датчика устарело) 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"}]

1 Ответ

0 голосов
/ 09 февраля 2019

Вы, похоже, пытаетесь заполнить некоторые глобальные переменные.Но вы допустили ошибки в области применения, и это также считается ошибочным шаблоном дизайна.Также на данный момент у вас, кажется, нет места, где вы на самом деле вызываете функцию draw().

Было бы лучше для инкапсуляции, возможно, если бы draw() принял некоторые параметры, например

function draw(val0, val1, val2, val3) {

Тогда в функции gotData вы можете написать

draw(data[size]['outputValue0'], data[size]['outputValue1'], data[size]['outputValue2'], data[size]['outputValue3']); 

, чтобы передать ей значения и изменить свою форму.

...