Envoi des dates JSON à Google Maps API de Perl

J'ai une petite application de danseur qui sert de HTML (y compris le javascript pour appeler l'API de google charts) et pour d'autres URL interroge une base de données et renvoie les données dans JSON encodé sous une forme que vous pouvez passer à google.visualization.DataTable. Le javascript interroge l'application de danseur pour les données JSON puis la transmet dans l'API Google Maps – Une version simplifiée est:

<script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script type="text/javascript"> google.load('visualization', '1.0', {'packages':['corechart']}); google.setOnLoadCallback(initialize); function initialize() { var res = $.ajax({ url: "/data/2", dataType:"json", async: false, data: "{}", contentType: "application/json", error: function(jqXHR, textStatus, errorThrown) { alert('textStatus ' + textStatus); alert('errorThrown ' + errorThrown); } }); jsonData = res.responseText; var data = new google.visualization.DataTable(jsonData); var chart = new google.visualization.BarChart(document.getElementById('chart_div')); chart.draw(data, {width: 400, height: 240}); } </script> 

Le problème est que certaines des données renvoyées par le Perl incluent les dates / horodatages et devraient donc avoir le type réglé sur "datetime":

 {"rows":[{"c":[{"v":"WHAT_CAN_I_PUT_HERE"},{"v":"2095"}]}],"cols":[{"type":"datetime","label":"DTU"},{"type":"number","label":"COUNT"}]} 

En Javascript, vous pouvez créer une date pour passer à l'API Google Maps avec:

 new Date(2012, 1, 08, 09, 32, 0) 

Comment puis-je envoyer une date encodée dans JSON de Perl de telle sorte que l'API Google Maps l'comprenne? Si vous ne pouvez pas quelles autres options pourraient être disponibles pour moi?

JSON ne prend pas en charge les dates en tant que types de données. Mais selon la documentation de Google, vous pouvez simplement envoyer une chaîne avec ce format:

JSON ne prend pas en charge les valeurs de date JavaScript (par exemple, "nouvelle Date (2008,1,28,0,31,26)", l'implémentation de l'API. Cependant, l'API prend désormais en charge une représentation JSON personnalisée des dates en tant que Chaîne dans le format suivant: Date (année, mois, jour [, heure, minute, seconde [, milliseconde]]) où tout après jour est facultatif, et les mois sont basés sur zéro.

Google Chart Tools Data Source Protocol

Juste pour clarifier: vous devriez écrire la valeur de la cellule comme une chaîne qui ressemble à celle-ci: Date (année, mois). Pour votre exemple:

 {"rows":[{"c":[{"v":"Date(year, month)"},{"v":"2095"}]}],"cols":[{"type":"datetime","label":"DTU"},{"type":"number","label":"COUNT"}]} 

J'espère que cela vous aidera et vous corrige, car je l'utilise en php et non perl

J'étais confronté au même problème et au-dessus que la solution ne fonctionnait pas. Après avoir cherché des heures, j'ai trouvé la publication suivante et la solution a fonctionné.

https://groups.google.com/forum/#!msg/google-visualization-api/SCDuNjuo7xo/ofAOTVbZg7YJ

N'incluez pas "nouveau" dans la chaîne json, ce sera juste: "Date (2012, 1, 08, 09, 32, 0)"