Converting JSON data for google chart datatable

后端 未结 1 482
滥情空心
滥情空心 2020-12-21 18:39

I am trying to convert this json into the correct format for a google chart:

var jsonData =  {\"Battery Voltage, (A)\":
                    {\"2017-11-11T00:         


        
相关标签:
1条回答
  • 2020-12-21 19:14

    first, build an array of the column headings...

    // build chart columns
    var chartCols = ['Datetime'];
    Object.keys(jsonData).forEach(function (column) {
      chartCols.push(column);
    });
    

    then a unique list of the dates...

    // build list of date
    var dateValues = [];
    Object.keys(jsonData).forEach(function (column) {
      Object.keys(jsonData[column]).forEach(function (dateValue) {
        if (dateValues.indexOf(dateValue) === -1) {
          dateValues.push(dateValue);
        }
      });
    });
    

    then you can use each date to find the value in the respective column,
    if it exists...

    // build chart data
    var chartData = [chartCols];
    dateValues.forEach(function (dateValue) {
      var row = [new Date(dateValue)];
      Object.keys(jsonData).forEach(function (column) {
        row.push(jsonData[column][dateValue] || null);
      });
      chartData.push(row);
    });
    

    google.charts.load('current', {
      packages: ['table']
    }).then(function () {
      var jsonData = {
        "Battery Voltage, (A)":
          {"2017-11-11T00:00:00.000Z":12.3
          ,"2017-11-11T00:01:00.000Z":12.35
          ,"2017-11-11T00:02:00.000Z":12.6
          ,"2017-11-11T00:03:00.000Z":12.7
          ,"2017-11-11T00:04:00.000Z":12.8}
        ,"Battery Current, (A)":
          {"2017-11-11T00:00:00.000Z":1.3
          ,"2017-11-11T00:01:00.000Z":1.4
          ,"2017-11-11T00:02:00.000Z":1.5
          ,"2017-11-11T00:03:00.000Z":1.6
          ,"2017-11-11T00:04:00.000Z":1.7}
      };
    
      // build chart columns
      var chartCols = ['Datetime'];
      Object.keys(jsonData).forEach(function (column) {
        chartCols.push(column);
      });
    
      // build list of date
      var dateValues = [];
      Object.keys(jsonData).forEach(function (column) {
        Object.keys(jsonData[column]).forEach(function (dateValue) {
          if (dateValues.indexOf(dateValue) === -1) {
            dateValues.push(dateValue);
          }
        });
      });
    
      // build chart data
      var chartData = [chartCols];
      dateValues.forEach(function (dateValue) {
        var row = [new Date(dateValue)];
        Object.keys(jsonData).forEach(function (column) {
          row.push(jsonData[column][dateValue] || null);
        });
        chartData.push(row);
      });
    
      var table = new google.visualization.Table(document.getElementById('table_div'));
      table.draw(google.visualization.arrayToDataTable(chartData));
    });
    <script src="https://www.gstatic.com/charts/loader.js"></script>
    <div id="table_div"></div>

    0 讨论(0)
提交回复
热议问题