2012-03-19 61 views
0

我想找到一種方法來解析包含Date對象的JSON字符串。如何解析JSON字符串與日期屬性

> var obj = {} 
> obj.date = new Date(); 
Mon Mar 19 2012 15:14:22 GMT-0700 (PDT) 
> obj.number = 1 
1 
> obj.float = 1.1 
1.1 
> obj.str = "hello" 
"hello" 
> obj 
Object 
date: Mon Mar 19 2012 15:14:22 GMT-0700 (PDT) 
float: 1.1 
number: 1 
str: "hello" 

> YAHOO.lang.JSON.stringify(obj) 
"{"date":"\"2012-03-19T22:14:22Z\"","number":1,"float":1.1,"str":"hello"}" 

> parsed = YAHOO.lang.JSON.parse(str) 
Object 
date: ""2012-03-19T22:14:22Z"" 
float: 1.1 
number: 1 
str: "hello" 

請參閱parsed.date是字符串,其中obj.date是之前的Date對象。用嵌套對象解析JSON的最佳方法是什麼?

謝謝

回答

2

JSON不能用於反序列化對象(Date>字符串>Date)。
只有字符串,數字,對象(文字),數組,布爾值和null可以很好地串行化。

你必須寫一個自定義的解析器,如下這與Date對象涉及:

  • 解析:使用Date構造解析時間戳。例如new Date(timestamp);

    function parse(str) { 
        var obj = YAHOO.lang.JSON.parse(str); 
        obj.date = new Date(obj); 
    } 
    
0

使用YUI stringToDate功能stringToDate輪流在ISO8601 UTC格式字符串到日期:

var parsed = YAHOO.lang.Json.stringToDate(str); 

parsed.date現在將包含一個Date對象和其他元素也將被de_serialized。

查看示例here