2015-01-13 66 views
0

我嘗試從URL獲取JSON數據並將值推入函數。 所有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();    
    } 

這工作 - 但「新日」的值(當然)也作爲字符串返回。 我該如何轉換它們? 該函數應使用的值是這樣的:

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/)您需要自己將日期「轉換」爲「日期」對象。您應該將日期存儲爲時間戳,然後循環數據以在值上調用「新日期」。 –

回答

0

您的錯誤是在new Date對象周圍包含''個字符。他們將其作爲字符串發送,而不是評估對象。

寫這篇文章,

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

,而不是

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

這將在標準格式返回日期。它也可以格式化。

注意:您不能通過JSON發送像Date這樣的自定義對象,只能評估字符串。 (僅僅是因爲JSON是一個獨立於平臺的交換)

相關問題