2012-03-19 21 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