2010-09-03 12 views
10

Existe-t-il un moyen de récupérer la valeur de date de JSON dans l'API Google Visualization? Voici le snipplet pour playgrounds'il vous plaît copiez le code ci-dessous dans ceComment renvoyer une valeur Date de JSON à Google Visualization API

Lorsque vous exécutez le code que vous n'aurez rien dans le résultat. vous devez supprimer les guillemets de la valeur de date que j'ai marquée avec un commentaire afin de récupérer le résultat.

function drawVisualization() { 
var JSONObject = { 
cols: 
    [ 
     {id: 'header1', label: 'Header1', type: 'string'}, 
     {id: 'header2', label: 'Header2', type: 'date'} 
    ], 
rows: 
    [ 
     { 
      c: 
       [ 
        {v: 'Value1'}, 
        {v: "new Date(2010, 3, 28)"} // <= This is the format I receive from WebService 
       ] 
     }, 
     { 
      c: 
       [ 
        {v: 'Value2'}, 
        {v: new Date(2010, 3, 28)} // <=This is the format Google API accepts 
       ] 
     } 
    ] 
}; 

var data = new google.visualization.DataTable(JSONObject, 0.5); 

visualization = new google.visualization.Table(document.getElementById('table')); 
visualization.draw(data, {'allowHtml': true}); 
} 
+0

mec j'ai le même problème! –

+0

Je sais que c'est une question assez ancienne mais j'ai le même problème et vous pourriez aider. Ceci est mon json '[[" Date (2015,6,1) ", 9,218.0], [" Date (2015,7,1) ", 10,497.5], [" Date (2015,8,1) ", 13,317.5] , ["Date (2015,9,1)", 29,1572,0], ["Date (2015,10,1)", 34,480.0], ["Date (2015,11,1)", 20,387.0], [" Date (2016,0,1) ", 34,836.0], [" Date (2016,1,1) ", 29,957.5], [" Date (2016,2,1) ", 2,1250.0], [" Date (2016 , 3,1) ", 2 793,5], [« Date (2016,10,1) », 3,801.0], [« Date (2016,11,1) », 2,756.5], [« Date (2017,1,1) ", 2,410.0]]' et j'obtiens l'erreur Uncaught: Type discordance. Valeur Date (2015,6,1) ne correspond pas à la date du type dans l'index de colonne 0. –

Répondre

0

Je suppose que la citation est pas au bon endroit dans votre extrait "new Date(2010, 3, 28") écrire à la place "new Date(2010, 3, 28)"

format JSON n'accepte pas javascript objet pour que le serveur renvoie une chaîne. JSON ne connaît que des nombres, des constantes booléennes, des chaînes, des valeurs nulles, des vecteurs et des 'objets' (beaucoup plus un dictionnaire).

Je suppose que vous devez effectuer une eval() de la chaîne retournée (n'oubliez pas de vérifier les entrées).

Une autre alternative est d'utiliser un Regex pour extraire les champs quelque chose comme /new Date\((\d+),(\d+),(\d+)\)/ fonctionnera.

+1

eval() est l'une des solutions. Ce que j'ai trouvé avant de lire votre réponse, VGE, est de parcourir les dates et de créer une nouvelle date (data.row [i] .c [0] .v) (la date est la première série). J'ai bien sûr eu la date formulée en chaîne afin que le nouveau Date() le comprenne. –

+0

Désolé Marcel, je n'ai pas vu ton commentaire avant. Ni EVAL ni la manipulation de données entières ne sont une solution élégante. – cilerler

+0

@VGE merci pour la citation de point. C'était une simple faute de frappe. J'ai mis à jour cela sur la question – cilerler

9

Je viens de rencontrer ce problème moi-même, donc je pensais que je colle la réponse de la documentation api google, situé ici http://code.google.com/apis/chart/interactive/docs/dev/implementing_data_source.html#jsondatatable

« JSON ne supporte pas JavaScript Les valeurs de date (par exemple, » new Date (2008,2,28,0,31,26) ", mais l'API prend désormais en charge une représentation JSON personnalisée et valide des dates sous forme de chaîne au format suivant: Date (année, mois, jour [, heure, minute, seconde [, milliseconde]]) où tout après le jour est facultatif et les mois sont basés sur zéro. "