2013-03-07 127 views
1

我想在我的Javascript中将一个字符串转换为JSON对象。当我转换成JSON对象的日期完全改变如何将字符串与日期转换为Json对象?

此字符串是我的字符串

var JsonData=[[2013-02-27,787],[2013-02-26,131],[2013-02-02,0],[2013-01-20,8],[2012-12-28,12]] 

我转换成JSON对象,具有以下

var json = eval(JsonData); 

然后我得到以下结果警报

1984,787,1985,131,2009,0,1992,8,1972,12 

任何人都可以请指导我吗?我该如何解决这个问题?

现在,我得到以下

Timestamp: 3/7/2013 1:10:36 PM 
Error: TypeError: this.proxy.getTime is not a function 

在我javascript..so带我在想,它怎么一回事,因为日期不正确使用JSON Object..is会这样?任何人都可以转换的错误,请指南?

+1

哇我注意到数据转换进行的算术运算:) 2013-02-27 = 1984. 2013-02-26 = 1985。只是猜测,但也许你应该把它们用引号引起来。 :) – Oneb 2013-03-07 07:24:48

+0

ok.i在json对象中有相同的字符串,但它现在不能继续工作..因为我希望它作为json中的日期对象..所以请你告诉我该怎么做 – 2013-03-07 07:29:34

回答

1
<script> 
var JsonData=[[2013-02-27,787],[2013-02-26,131],[2013-02-02,0],[2013-01-20,8],["2012-12-28,12"],["Fri May 04 2012 01:17:07 GMT-0700 (PDT)"]] 
var json = eval(JsonData); 
alert(json); 
</script> 

然后我得到的结果是1984,787,1985,131,2009,0,1992,8,2012-12-28,12,周五2012年5月4日1时17分07秒GMT-0700(太平洋夏令时)。所以我认为这些日期应该用双引号括起来。 我希望这可以帮助。

+0

是的,我解决了这个问题...但它现在不工作前..因为我想它作为JSON的日期对象..你可以请告诉我如何做到这一点 – 2013-03-07 07:33:58

+0

我认为你可能需要在作为JSON发送之前序列化日期。你可以看看这个帖子也可以,它可以帮助你。[见这篇文章](http://stackoverflow.com/questions/4511705/how-to-parse-json-to-receive-a-date-对象中的JavaScript)。在很多情况下,我看到数据就是这样发送的。另外我不确定JSON的日期方面。 – Hari 2013-03-07 09:00:34

3

不要使用eval()

使用JSON.parse()来将字符串转换成JSON对象。另外,由于您的JsonData不是有效的JSON,请使用JSON.stringify()

var JsonData = [[2013-02-27,787],[2013-02-26,131],[2013-02-02,0],[2013-01-20,8],[2012-12-28,12]]; 
JSONObject = JSON.parse(JSON.stringify(JsonData)); 
相关问题