我创建了一个扩展方法,它使用内置的ASP.NET序列化程序将我的对象序列化为JSON,以便通过AJAX发送回我的服务器,如下所示:
namespace ExtensionMethods.Json
{
public static class JsonHelper
{
public static string ToJson(this object obj)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(obj);
}
public static string ToJson(this object obj, int recursionDepth)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
serializer.RecursionLimit = recursionDepth;
return serializer.Serialize(obj);
}
}
}
//usage
String json = myObject.ToJson();
除了日期之外,这样可以正常工作,因为它以这种格式发回日期:
/Date(1291276800000)/
有没有办法修复这个服务器端,以便日期变得更容易管理,或者必须在客户端进行一些愚蠢的字符解析(即,从数据中删除数字并尝试设置日期使用该数字作为毫秒)?还是有一种更好的方式我只是俯视?我已经尝试了Date.parse([the date])
,但错误的是“日期格式无效”。
答案 0 :(得分:3)
这是一个有效的Json日期。看看这个其他的SO问题,以帮助您获得该日期。 How do I format a Microsoft JSON date?
答案 1 :(得分:1)
我使用了Date类型的JavaScript Date Format日期格式扩展名。它与JSON格式的日期配合得很好。
我包含.js文件并将我的日期格式化为:
function formatJsonDate(jsonDate, formatString) {
var dt = new Date(+jsonDate.replace(/\/Date\((\d+)\)\//, '$1'));
return dt.format(formatString);
}
var formattedDate = formatJsonDate(jsonDate, "mm/dd/yyyy");
甚至还有一些预定义的日期格式掩码,例如:
// Some common format strings
dateFormat.masks = {
"default": "ddd mmm dd yyyy HH:MM:ss",
shortDate: "m/d/yy",
mediumDate: "mmm d, yyyy",
longDate: "mmmm d, yyyy",
fullDate: "dddd, mmmm d, yyyy",
shortTime: "h:MM TT",
mediumTime: "h:MM:ss TT",
longTime: "h:MM:ss TT Z",
isoDate: "yyyy-mm-dd",
isoTime: "HH:MM:ss",
isoDateTime: "yyyy-mm-dd'T'HH:MM:ss",
isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
};
答案 2 :(得分:0)
我也遇到了这个问题,并决定将所有日期对象移到Unix时间戳并将其解析回来。这是额外的工作,但它保留了有趣的格式。如果你有一个long
数据类型的类变量,它应该很好地保存一个时间戳。
这里有一些非常可靠的样品。
答案 3 :(得分:0)
对于这个答案,这基本上就是我使用的:
function parseJsonDate (date, shortFormat) {
if (date != null) {
var d = new Date(parseInt(date.substr(6)));
if (shortFormat) {
return (d.getMonth() + 1) + '/' + d.getDate() + '/' +
d.getFullYear().toString().substr(2);
}
return d;
} else {
return null;
}
}