【问题标题】:How to convert String with Date to Json Object?如何将带日期的字符串转换为 Json 对象?
【发布时间】:2013-02-22 07:19:00
【问题描述】:

我想在我的 Javascript 中将一个字符串转换为 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中的某个地方..所以我认为它是因为日期在Json Object中没有正确转换..是这样吗?有人可以指导吗?

【问题讨论】:

  • 哇,我注意到数据转换执行了算术运算 :) 2013-02-27 = 1984。2013-02-26 = 1985。只是一个猜测,但也许你应该将它们括在引号中。 :)
  • 好的。我在 json 对象中得到了相同的字符串 to..但它现在无法正常工作..因为我希望它作为 json 中的日期对象..所以你能告诉我该怎么做

标签: javascript json type-conversion


【解决方案1】:

不要使用 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));

【讨论】:

    【解决方案2】:
    <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,Fri May 04 2012 01:17:07 GMT-0700 (PDT)。所以我认为日期应该用双引号引起来。 我希望这会有所帮助。

    【讨论】:

    • 是的,我解决了这个问题......但它现在无法继续工作......因为我希望它作为 json 中的日期对象......所以你能告诉我该怎么做
    • 我认为您可能需要在以 json 格式发送之前对日期进行序列化。你能不能也看看这个帖子,它可能对你有帮助。See this post。我看到在很多情况下数据都是这样发送的。我也不确定 json 的日期方面。
    猜你喜欢
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 2020-11-30
    • 2022-01-11
    • 1970-01-01
    相关资源
    最近更新 更多