我有以下一段 JSON:
\/Date(1293034567877)\/
这是 .NET 代码的结果:
var obj = DateTime.Now;
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
serializer.Serialize(obj).Dump();
现在我面临的问题是如何在 JavaScript 中创建一个 Date 对象。 我所能找到的只是令人难以置信的正则表达式解决方案(许多包含错误)。
很难相信没有优雅的解决方案,因为这一切都在 JavaScrip 中,我的意思是 JavaScript 代码试图读取 JSON(JavaScript 对象表示法),它应该是 JavaScript 代码,而现在事实证明它不是因为 JavaScript 在这方面做得不好。
我还看到了一些我无法使用的评估解决方案(除了被指出为安全威胁之外)。
真的没有办法优雅地做到吗?
没有真正答案的类似问题:
How to parse ASP.NET JSON Date format with GWT
最佳答案
JSON.parse
函数接受可选的 DateTime reviver 函数。你可以使用这样的函数:
dateTimeReviver = function (key, value) {
var a;
if (typeof value === 'string') {
a = /\/Date\((\d*)\)\//.exec(value);
if (a) {
return new Date(+a[1]);
}
}
return value;
}
然后调用
JSON.parse(somejsonstring, dateTimeReviver);
你的日期会正确的。
https://stackoverflow.com/questions/4511705/