2010-09-03 10 views
10

Gibt es eine Möglichkeit, Datumswerte von JSON in Google Visualization API abzurufen? Hier ist die snipplet für playgroundbitte den Code unten in esRückgabe eines Datumswerts von JSON an Google Visualization API

kopieren Wenn Sie den Code ausführen Sie nichts in Folge haben wird. Sie sollten die Anführungszeichen aus dem mit Kommentar markierten Datumswert entfernen, um das Ergebnis zu erhalten.

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

Geck ich das gleiche Problem! –

+0

Ich weiß, das ist eine ziemlich alte Frage, aber ich habe das gleiche Problem und Sie könnten helfen. Dies ist mein json '[[" (Datum (2015,6,1) ", 9,218,0], [" Datum (2015,7,1) ", 10,497.5], [" Datum (2015,8,1) ", 13,317.5] , ["Datum (2015,9,1)", 29,1572,0], ["Datum (2015,10,1)", 34,480.0], ["Datum (2015,11,1)", 20.387,0], [" Datum (2016,0,1) ", 34.836,0], [" Datum (2016,1,1) ", 29.957,5], [" Datum (2016,2,1) ", 2.1250,0], [" Datum (2016 , 3,1) ", 2.793,5], [" Datum (2016,10,1) ", 3.801,0], [" Datum (2016,11,1) ", 2,756,5], [" Datum (2017,1,1)] ", 2.410.0]]' und ich bekomme Uncaught Error: Type mismatch. Das Valutadatum (2015, 6, 1) entspricht nicht dem Typ Datum im Spaltenindex 0. –

Antwort

0

Ich nehme an, dass das Zitat in Ihrem Snippet "new Date(2010, 3, 28") schreibt stattdessen nicht an der richtigen Stelle ist "new Date(2010, 3, 28)"

Json-Format nicht unterstützt JavaScript-Objekt akzeptieren, damit der Server eine Zeichenfolge zurück. JSON kennt nur Zahlen, boolesche Konstanten, String, Null, Vektor und 'Objekt' (viel mehr ein Wörterbuch).

Ich nehme an, dass Sie eine eval() der zurückgegebenen Zeichenfolge (vergessen Sie nicht, Eingaben zu überprüfen).

Eine andere Alternative ist die Verwendung eines Regex, um die Felder zu extrahieren, so etwas wie /new Date\((\d+),(\d+),(\d+)\)/ funktioniert.

+1

eval() ist eine der Lösungen. Was ich vor dem Lesen Ihrer Antwort, VGE, gefunden habe, besteht darin, über die Daten zu iterieren und ein neues Datum zu erstellen (data.row [i] .c [0] .v) (das Datum ist die erste Serie). Ich hatte natürlich das Datum in String formatiert, so dass das neue Date() es versteht. –

+0

Sorry Marcel, ich habe deinen Kommentar vorher nicht gesehen. Weder EVAL noch Manipulation von ganzen Daten sind elegante Lösung. – cilerler

+0

@VGE danke für den Hinweis Zitat. Es war ein einfacher Tippfehler. Ich habe das auf Frage aktualisiert – cilerler

9

Ich lief in dieses Problem mich, so dass ich dachte, dass ich die Antwort aus der Dokumentation google api einfügen würde, hier befindet sich http://code.google.com/apis/chart/interactive/docs/dev/implementing_data_source.html#jsondatatable

„JSON JavaScript nicht Datumswerte (zum Beispiel unterstützen“ new Date (2008,1,28,0,31,26) "; die API-Implementierung tut dies jedoch. Die API unterstützt jetzt eine benutzerdefinierte gültige JSON-Darstellung von Datumsangaben als Zeichenfolge im folgenden Format: Datum (Jahr, Monat, Tag [, Stunde, Minute, Sekunde [, Millisekunde]], wo alles nach dem Tag optional ist, und die Monate Null sind. "

Verwandte Themen