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