0

我正在尝试找到一种方法来解析包含 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 的最佳方法是什么?

谢谢你

4

2 回答 2

2

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

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

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

    function parse(str) {
        var obj = YAHOO.lang.JSON.parse(str);
        obj.date = new Date(obj);
    }
    
于 2012-03-19T22:37:01.600 回答
0

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

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

parsed.date 现在将包含一个 Date 对象,并且其他元素也将被反序列化。

在这里看一个例子。

于 2012-03-20T12:13:30.590 回答