我在客户端有一个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仍然无法获得它。
关于如何在隐藏的有效格式中获取它的任何想法?
答案 0 :(得分:1)
我有同样的问题和
'\/Date(' + date.getTime() + ')\/';
适合我。 你只需要一个双反斜杠而不是一个反斜杠。
答案 1 :(得分:1)
我在序列化后使用下面的代码来修复数据。
var data = JSON.stringify(object);
data = data.replace(/\\\\/g, "\\");
答案 2 :(得分:1)
旧问题,但万一有人到我这里寻找解决方案,发现这有效: https://stackoverflow.com/a/21865563/364568
function customJSONstringify(obj) {
return JSON.stringify(obj).replace(/\/Date/g, "\\\/Date").replace(/\)\//g, "\)\\\/")
}