3

我在客户端有一个 JSON 对象,我想在服务器端返回。
为此,我有一个隐藏对象,其中放置了我的对象的字符串化版本。

$("#<%=hidden.ClientID%>").val(JSON.stringify(obj));

然后,在服务器端,我尝试使用 JavaScriptSerializer 对其进行反序列化。

我的问题:字符串化对象包含一个日期,我无法用 de JavaScriptSerializer 解析它。
我所做的:修改日期格式以使其适合 .Net 格式:

function FormatDate(date) {
    if (typeof (date.getTime) != "undefined") {
        return '\\/Date(' + date.getTime() + ')\\/'
    }

    return date;
}

这似乎提供了一个很好的格式,但是,当我在具有格式良好的日期的对象上使用 JSON.stringify 时,它会添加一个额外的反斜杠,因此 JavaScriptSerializer 仍然无法获取它。

关于如何在隐藏中以有效格式获取它的任何想法?

4

3 回答 3

1

我使用下面的代码在序列化后修复数据。

var data = JSON.stringify(object);
data = data.replace(/\\\\/g, "\\");
于 2012-11-16T07:35:22.513 回答
1

我有同样的问题和

'\/Date(' + date.getTime() + ')\/';

为我工作。你只有一个双反斜杠而不是一个反斜杠。

于 2012-06-27T13:50:36.573 回答
1

老问题,但万一有人像我一样来到这里寻找解决方案,发现这个可行: https ://stackoverflow.com/a/21865563/364568

function customJSONstringify(obj) {
    return JSON.stringify(obj).replace(/\/Date/g, "\\\/Date").replace(/\)\//g, "\)\\\/")
}
于 2016-05-11T13:55:47.033 回答