如何使用Date属性解析JSON String

时间:2012-03-19 22:30:09

标签: javascript json yui stringify

我正在尝试找到一种解析包含Date对象的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 个答案:

答案 0 :(得分:2)

JSON不能用于反序列化对象(Date> String > Date )。
只有字符串,数字,对象(文字),数组,布尔值和null才能很好地序列化。

您必须编写一个自定义解析器,它处理Date对象,如下所示:

  • 解析:使用Date构造函数解析时间戳。例如new Date(timestamp);

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

答案 1 :(得分:0)

使用yui stringToDate函数stringToDate将iso8601 UTC格式的字符串转换为日期:

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

parsed.date现在将包含一个Date对象,其他元素也将被de_serialized。

查看示例here