2010-09-03 18 views
10

¿hay alguna forma de recuperar el valor de fecha de JSON en la API de visualización de Google? Aquí es el snipplet para playgroundPor favor, copiar el código de abajo en élCómo devolver un valor de fecha de JSON a API de visualización de Google

Cuando se ejecuta el código que no tendrá nada en consecuencia. debe eliminar las comillas del valor de fecha que marqué con el comentario para recuperar el resultado.

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

tio tengo el mismo problema! –

+0

Sé que esta es una pregunta bastante antigua, pero tengo el mismo problema y podría ayudar. Este es mi json '[[" Fecha (2015,6,1) ", 9,218.0], [" Fecha (2015,7,1) ", 10,497.5], [" Fecha (2015,8,1) ", 13,317.5] , ["Fecha (2015,9,1)", 29,1572.0], ["Fecha (2015,10,1)", 34,480.0], ["Fecha (2015,11,1)", 20,387.0], [" Fecha (2016,0,1) ", 34,836.0], [" Fecha (2016,1,1) ", 29,957.5], [" Fecha (2016,2,1) ", 2,1250.0], [" Fecha (2016) , 3,1) ", 2,793.5], [" Fecha (2016,10,1) ", 3,801.0], [" Fecha (2016,11,1) ", 2,756.5], [" Fecha (2017,1,1) ", 2,410.0]]' y recibo un error no capturado: no coinciden los tipos. La Fecha de valor (2015,6,1) no coincide con la fecha de tipo en el índice de columna 0. –

Respuesta

0

supongo que la cita no está en el lugar correcto en el fragmento "new Date(2010, 3, 28") escritura en lugar "new Date(2010, 3, 28)"

formato JSON no acepta javascript objeto para que el servidor devuelva una cadena. JSON solo conoce números, constantes booleanas, cadena, nulo, vector y 'objeto' (mucho más un dictionario).

Supongo que debe realizar una evaluación() de la cadena devuelta (no olvide verificar las entradas).

Otra alternativa es usar un Regex para extraer los campos algo como /new Date\((\d+),(\d+),(\d+)\)/ funcionará.

+1

eval() es una de la solución. Lo que encontré antes de leer su respuesta, VGE, es repetir las fechas y crear una nueva Fecha (data.row [i] .c [0] .v) (la fecha es la primera serie). Por supuesto, tenía la fecha formateada en cadena, así que la nueva Fecha() lo comprende. –

+0

Lo siento, Marcel, no he visto tu comentario antes. Ni EVAL ni la manipulación de datos completos son una solución elegante. – cilerler

+0

@VGE gracias por el comentario. Fue un error simple. Actualicé eso en la pregunta – cilerler

9

Me acabo de encontrar con este problema por mí mismo, por lo que pensé en pegar la respuesta de la documentación de la API de Google, que se encuentra aquí http://code.google.com/apis/chart/interactive/docs/dev/implementing_data_source.html#jsondatatable

"JSON no soporta JavaScript valores de fecha (por ejemplo," new Date (2008,1,28,0,31,26) "; la implementación API sí lo hace. Sin embargo, ahora la API admite una representación de fechas JSON válida y personalizada como una cadena en el siguiente formato: Fecha (año, mes, día [, hora, minuto, segundo, [milisegundos]]) donde todo tras día es opcional, y meses están basados ​​en cero ".

Cuestiones relacionadas