Как вернуть значение Date из JSON в API визуализации Google - PullRequest
10 голосов
/ 03 сентября 2010

Есть ли способ получить значение даты из JSON в API визуализации Google? Вот фрагмент кода для детской площадки , скопируйте в него приведенный ниже код

Когда вы запустите код, вы ничего не получите в результате. Вы должны удалить кавычки из значения даты, которое я пометил комментарием, чтобы получить результат.

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});
}

Ответы [ 3 ]

9 голосов
/ 29 февраля 2012

Я сам столкнулся с этой проблемой, поэтому я решил вставить ответ из документации по API Google, расположенной здесь http://code.google.com/apis/chart/interactive/docs/dev/implementing_data_source.html#jsondatatable

"JSON не поддерживает значения даты JavaScript (дляНапример, «новая дата (2008,1,28,0,31,26)»; реализация API поддерживает. Однако теперь API поддерживает настраиваемое допустимое представление дат в формате JSON в виде строки в следующем формате: Дата (год), месяц, день [, час, минута, секунда [, миллисекунда]]), где все после дня необязательно, а месяцы начинаются с нуля. "

1 голос
/ 01 декабря 2014

Я столкнулся с той же проблемой, и вышеуказанное решение не сработало. После поисков в течение нескольких часов я нашел следующий пост, и решение там сработало.

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

Не включайте «new» в строку json, так что это будет просто: v: «Дата (2009, 9, 28)»

0 голосов
/ 22 декабря 2010

Я полагаю, что цитата находится не в том месте в вашем фрагменте "new Date(2010, 3, 28") Напишите вместо "new Date(2010, 3, 28)"

Формат Json не принимает объект javascript, поэтому сервер возвращает строку.JSON знает только числа, логические константы, строку, ноль, вектор и «объект» (гораздо больше словарь).

Я полагаю, что вы должны выполнить eval () возвращаемой строки (не забудьтепроверьте входные данные).

Другой альтернативой является использование регулярных выражений для извлечения полей, например, будет работать /new Date\((\d+),(\d+),(\d+)\)/.

...