2 votes

Comment convertir Json en table de données pour Google Visualization ?

J'ai une méthode avec un appel ajax au serveur pour obtenir un résultat json.

var jsonData = $.ajax({
        url: '/Reports/GetJsonData',
        type: 'GET',
        dataType: 'json',
        error: function (err) {
            alert("Error : "+err.statusText);
        }
 }).responseText;

Ensuite, je peux obtenir le résultat Json suivant dans la variable "jsonData".

[
 {"LineName":"L1","Car":23,"Bus":0,"Motorcycle":0,"Person":0,"Others":0}
,{"LineName":"L2","Car":0,"Bus":0,"Motorcycle":6,"Person":0,"Others":0}
,{"LineName":"L3","Car":10,"Bus":20,"Motorcycle":36,"Person":13,"Others":0}
]

Je veux convertir ce résultat au format suivant

 [['LineName', 'Car', 'Bus','Motorcycle', 'Person','Others'],
  ['L1', 23, 0, 0,0,0],
  ['L2', 0, 0, 6,0,0],
  ['L3', 10, 20, 36,13,0]]

Ensuite, je veux l'utiliser dans l'API de visualisation de Google pour dessiner un graphique.

var data = new google.visualization.arrayToDataTable(jsonData);

J'ai juste besoin de savoir s'il y a un moyen simple de convertir les données qui peuvent passer à la visualisation google.

3voto

WhiteHat Points 33117

Voir l'extrait de travail suivant...

google.charts.load('current', {
  callback: drawChart,
  packages:['table']
});

function drawChart() {
  var jsonData = [
    {"LineName":"L1","Car":23,"Bus":0,"Motorcycle":0,"Person":0,"Others":0},
    {"LineName":"L2","Car":0,"Bus":0,"Motorcycle":6,"Person":0,"Others":0},
    {"LineName":"L3","Car":10,"Bus":20,"Motorcycle":36,"Person":13,"Others":0}
  ];

  var gglData = [];
  if (jsonData.length > 0) {
    // load column headings
    var colHead = [];
    Object.keys(jsonData[0]).forEach(function (key) {
      colHead.push(key);
    });
    gglData.push(colHead);

    // load data rows
    jsonData.forEach(function (row) {
      var gglRow = [];
      Object.keys(row).forEach(function (key) {
        gglRow.push(row[key]);
      });
      gglData.push(gglRow);
    });
  }

  // arrayToDataTable is a static method, "new" keyword not needed
  var data = google.visualization.arrayToDataTable(gglData);
  var table = new google.visualization.Table(document.getElementById('table_div'));
  table.draw(data);
}

<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="table_div"></div>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X