назначить json объект переменной javascript в CanvasJS - PullRequest
2 голосов
/ 12 февраля 2020

Я пытаюсь присвоить объекту json переменной. Я не уверен, как выполнить sh this.

Это мой JSON массив:

[{
    "Date": "2020-01-24 07:35:46",
    "sensorName": "sensor 1",
    "sensorValue": 213
}, {
    "Date": "2020-01-24 07:35:46",
    "sensorName": "sensor 1",
    "sensorValue": 433
}, {
    "Date": "2020-02-10 06:03:36",
    "sensorName": "sensor 1",
    "sensorValue": 321
}, {
    "Date": "2020-02-10 06:03:36",
    "sensorName": "sensor 1",
    "sensorValue": 43
}, {
    "Date": "2020-02-12 03:30:57",
    "sensorName": "sensor 1",
    "sensorValue": 4321
}]

I wi sh, чтобы присвоить значение sensorValue переменной yValue. Как мне это сделать? Например: для "sensorValue": 433, yValue = 433

<script>
var sensor1 = <?php echo json_encode($json_sensor1, JSON_NUMERIC_CHECK); ?>;
     var sensor2 = <?php echo json_encode($json_sensor2, JSON_NUMERIC_CHECK); ?>;

     var yValue1 = sensor1.sensorValue;
     var yValue2 = sensor2.sensorValue;
     var xValue = sensor1.Date;
</script>

1 Ответ

1 голос
/ 13 февраля 2020

Canvas JS принимает dataPoints как массив объектов как [{x: xValue1, y: yValue1}, {x: xValue2, y: yValue2}, ...]. Парсинг вашего JSON в этот формат перед передачей его в параметры диаграммы должен работать нормально.

var jsonData = [{
    "Date": "2020-01-24 07:35:46",
    "sensorName": "sensor 1",
    "sensorValue": 213
}, {
    "Date": "2020-01-24 07:35:46",
    "sensorName": "sensor 1",
    "sensorValue": 433
}, {
    "Date": "2020-02-10 06:03:36",
    "sensorName": "sensor 1",
    "sensorValue": 321
}, {
    "Date": "2020-02-10 06:03:36",
    "sensorName": "sensor 1",
    "sensorValue": 43
}, {
    "Date": "2020-02-12 03:30:57",
    "sensorName": "sensor 1",
    "sensorValue": 4321
}];

var dps = [];
var chart = new CanvasJS.Chart("chartContainer", {
  title:{
    text: "Basic Column Chart"
  },
  data: [{				
    dataPoints: dps
  }]
});

for(var i = 0; i < jsonData.length; i++) {
	dps.push({ x: new Date(jsonData[i].Date), y: Number(jsonData[i].sensorValue)})
}

chart.render();
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<div id="chartContainer" style="height: 200px; width: 100%;"></div>
...