2015-01-13 2 views
0

Я пытаюсь получить данные JSON из URL-адреса и нажать значения в функцию. Все значения JSON заключены в кавычки, чтобы иметь правильный формат JSON. Но на самом деле не все значения являются строками.Объект даты в возвращаемых данных JSON, обработанный как строка

Вот JSON образец:

table = [ 
      { 
      'date1': 'new Date(2015,13,1)', 
      'content': 'this is the content' 
      }, 
      { 
      'date1': 'new Date(2015,13,2)', 
      'content': 'this is the contentB' 
      } 
]; 

Файл загружен так:

var req = new XMLHttpRequest(); 
var url = "http://localhost/json-test"; 
req.onreadystatechange = function() { 
     if (req.readyState == 4 && req.status == 200) { 
      var myData = JSON.parse(req.responseText); 
      drawFunction(myData); 

     } 
} 
    req.open("GET", url, true); 
    req.send(); 

    function drawFunction(myData) { 
     doSomething();    
    } 

Это работает - но значения "новый Date" являются (разумеется) также возвращаются как строки , Как я могу их преобразовать? Функция должна использовать значение, как это:

table = [ 
      { 
      'date1': new Date(2015,13,1), //as new Date - not as string - without quotes 
      'content': 'this is the content' 
      }, 
      { 
      'date1': new Date(2015,13,2), 
      'content': 'this is the contentB' 
      } ]; 

я мог бы сделать это совершенно неправильно. Любой намек был бы оценен. Исходный файл JSON не может быть изменен.

+0

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

+0

Я согласен с @Juhana или посылаю значения месяца, дня и года и создаю их на стороне клиента. – Beartums

+2

JSON - это * строковое представление * данных. Его значения могут быть только строками, числами, булевыми или нулевыми значениями. (см .: http://json.org/). Вам нужно «преобразовать» даты в объекты 'Date' самостоятельно. Вы должны сохранить дату как временную метку, а затем перебрать данные для вызова 'новой даты' на значения. –

ответ

0

Ваша ошибка в числе '' символов вокруг объекта new Date. Они отправляют его как строку, а не оценивают объект.

Написать это,

'date1': (new Date(2015,13,1)).toString() 

вместо

'date1': 'new Date(2015,13,1)' 

Это возвращения в стандартном формате. Он также может быть отформатирован.

Примечание: Вы не можете отправлять пользовательские объекты, такие как Date через JSON, только оцениваемые строки. (просто потому, что JSON должен быть независимым от платформы обменом)

Смежные вопросы