根据OP中的注释阐述,我将使用Json.stringify的第二个参数,即所谓的“替换器”。事情是这样的:
require(['dojo/json'], function(Json) {
function replacer(key, value) {
if ('string' === typeof (value)) {
var d = new Date(value);
if (isNaN(d.getTime())) {
return value; // string, but not a date
}
// do whatever you want to do, this is just an example
d.setSeconds(0);
return d.toJSON();
}
return value;
}
var data = {'a':new Date(), 'b':123, 'c':'foo', 'd':[new Date()]};
var str = Json.stringify(data, replacer);
console.log(str);
});
我建议写这为道场/请求一个mixin,然后创建自己有此行为的自定义请求类,然后使用自定义的对象需要。
这感觉很骇人,但我认为它会满足你的需求(正如我理解它!)。
toJSON()方法(如链接文章中提到的)不能满足您的需要吗?例如,在您的Form对象中,将专门的toJSON序列化附加到该表单中的所有Date输入? (因此将影响隔离到那个表单上?) – bishop
@bishop我想将序列化的责任放到调用REST通道的方法上,从而隔离它所属的地方的代码并断言其他部分应用程序(可能使用其他远程服务)不受影响。 –
从长远来看,我建议您在UTC的电线上双向发送*全部*日期/时间。是不是你已经做了Javascript的日期对象被序列化? – Darien